1

私は定期的にいくつかの個別の状態を読み取り、いくつかのルールを状態の違いに適用して、いくつかのエラーを報告します。ルールは時間内に変更できます。

このような問題を解決するためのベストプラクティスは何ですか?

ありがとう。

4

3 に答える 3

3

最初に頭に浮かぶのは、StrategyというGof のデザイン パターンです。

Concrete Strategy オブジェクトでルールをエンコードします。したがって、時間の経過とともに変化する特定の具象戦略オブジェクトを持つことができます。ただし、新しいルールである IMHO を反映するように Concrete Strategy オブジェクトを変更するのが最善です。

ウィキペディアのリンクには、C++ の例があります。ただし、パターンの設計に慣れていない場合や、それについてさらに説明が必要な場合は、質問してください。

于 2010-08-18T11:54:03.963 に答える
2

ストラテジーパターンとは別に、シングルトンパターンも使用します。考えられる実装の1つ(これは非常にオープンですが、柔軟なルールセットが必要な場合は、「Rule」エンティティに別のクラスを使用する必要があります。ただし、この方法の方が理解しやすいです)。

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 *);
};

もちろん、これはヘッダーを示しています。実装ファイルがありません。お役に立てれば。

于 2010-08-18T12:18:31.777 に答える
0

いくつかのルールエンジンを使用できます。Javaには多くのルールエンジンがありますが、C++についてはよくわかりません。この投稿はあなたを助けるかもしれません。

于 2010-08-18T11:30:56.573 に答える