2010-08-18 7 views
1

정기적으로 일부 이산 상태를 읽고 상태 차이에 몇 가지 규칙을 적용하여 일부 오류를보고합니다. 시간에 규칙을 변경할 수 있습니다.규칙 기반 디자인

이러한 문제를 해결하기 위해 모범 사례는 무엇입니까?

감사합니다.

+0

실시간으로 규칙이 변경 될 수 있습니까? – DumbCoder

+0

꼭 그런 것은 아니지만 실시간에 대한 아이디어를 듣는 것이 좋을 수도 있습니다. – metdos

답변

2

나는 또한 전략 하나에서 떨어져, 싱글 톤 패턴을 사용하십시오. 하나의 가능한 구현 (. 이것은 당신이 당신이 "규칙"엔티티에 대한 또 다른 클래스를 사용 갈까요 규칙의 유연한를 원한다면, 아주 열려 그러나 있지만,이 방법은 이해하기 간단하다)의

class Rules { 
public: 
    virtual bool rule_1(Data *) = 0; 
    // ... 
    virtual bool rule_n(Data *) = 0; 

    static Rules * getRules() 
     { 
      // The only place in which to change the rule set 
      if (ruleSet == NULL) ruleSet = new Rules_September2010(); 
      return ruleSet; 
     } 
protected: 
    Rules(); 
    static Rules * ruleSet; 
}; 

class Rules_August2010 : public Rules { 
public: 
    bool rule_1(Data *); 
    bool rule_n(Data *); 
}; 

class Rules_September2010 : public Rules { 
public: 
    bool rule_1(Data *); 
    bool rule_n(Data *); 
}; 

물론 이것은 머리글의 표시입니다. 구현 파일이 누락되었습니다. 희망이 도움이됩니다.

0

당신은 몇 가지 규칙 엔진을 사용할 수 있습니다. 자바에는 규칙 엔진이 많이 있습니다. 나는 abt C++을 잘 모르겠습니다. 이 post이 도움이 될 수 있습니다. 내 마음에 오는 첫번째 무엇

3

Strategy라는 GOF 'Design Pattern입니다.

당신은 콘크리트 전략 객체에 규칙을 인코딩합니다. 그래서 시간이 갈수록 변하는 특정 구체 전략 객체를 가질 수 있습니다. 하지만 IMHO라는 새로운 규칙을 반영하여 구체적인 전략 개체를 변경하는 것이 가장 좋습니다.

위키 링크의 C++ 일례를 갖는다. 그러나 당신이 패턴을 디자인하고 새로운 설명이 필요하다면 그냥 물어보십시오.

+0

+1 전략 패턴 –

관련 문제