2010-08-18 99 views
1

我會定期閱讀一些離散狀態,並將一些規則應用於狀態差異,我會報告一些錯誤。 規則可以及時更改。基於規則的設計

什麼是解決此類問題的最佳實踐?

謝謝。

+0

規則可以及時更改是否意味着實時? – DumbCoder 2010-08-18 11:23:10

+0

不一定,但聽到關於實時的想法可能會很好。 – metdos 2010-08-18 11:32:43

回答

2

除了策略之外,我還會使用單例模式。 一種可能的實現(雖然這是相當開放的,如果你想要一套靈活的規則,你768,16使用另一個類的「規則」的實體。然而,這種方式更容易理解):

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

您可以使用一些規則引擎。在java中有很多規則引擎,我不知道abt C++。 This post may help you。

3

我首先想到的是Gof'Design Pattern,叫做Strategy

您將規則編碼到具體策略對象中。 所以你可以有一個特定的具體策略對象在時間上發生變化。 但最好的是改變具體的戰略對象,以反映新的規則,恕我直言。

維基百科鏈接在C++中有一個示例。但是,如果你對設計模式不熟悉,或者需要進一步的解釋,就問一下。

+0

戰略模式+1 – 2010-08-18 12:58:24