그런 다음 웹 응용 프로그램에서 일종의 업적을 구현하는 순간이 왔습니다. 이 질문에 설명 된 계층 구조와 비슷한 아이디어가 있습니다. How to implement an achievement system in RoR.rails achievements
우리가 작업하고있는 응용 프로그램은 소프트웨어 개발자없이 외부에서 관리하려는 서비스로서의 소프트웨어입니다. 웹 인터페이스를 통해 소프트웨어 관리자가 새로운 종류의 업적 런타임을 생성 할 수 있어야합니다. 그런 다음 계층 구조가 벽이됩니다.
나는 유한 상태 기계를 통해이 상황을 구현할 수있는 곳을 읽었지 만, 현재이 주제에 관한 충분한 정보가 없습니다.
편집 : 특정 질문
내가이 충족되어야 할 조건 목록과 성과 클래스를 모델링에 대해 생각했다. 이 기본 클래스 성취에는 모든 조건이 유효한지 재귀 적으로 검사하는 부울 값이 있습니다. 그런 다음 조건은 하드 코드 된 클래스가 될 수 있습니다. 시스템 관리자는의 조합으로 새로운 종류의 업적을 만듭니다.
내 두려움은 원자 조건에 대한 클래스 수가 늘어나는 것입니다. 프로젝트에서 30+ 조건 클래스를 갖고 싶지 않습니다. 모든 조언 정말 감사합니다.
편집 : SpyrosP 응답에서 구현
에 대한 자세한 내용은, 그것은 설명 DSL을 구축하는 것이 좋습니다 보인다. 어떤면에서는 업적을 데이터베이스에 저장해야합니다. 같은 예제를 유지 :
comments :less_than => 10
check_comments
comments :more_or_equal => 100
award_hundred_comments_badge
검사 할 조건 (들)을 저장하는 테이블이 있어야 dinamically 성과를 생성하기 위해 :
Achievement
| id | name |
| 1 | "Houndred Comments" |
Condition
| achievement_id | expression |
| 1 | some sort of condition |
StackOverflow는 명확한 답변이있는 특정 프로그래밍 문제 용입니다. 이것은 꽤 주관적입니다. – Almo
그런 다음 질문을 편집하십시오. –