次の問題があります。モデルを自動的に (イベントをリッスンして) 制御する一連のエンジンがあります。次の図は、一般的なクラス図を示しています。
現在、EngineFacade を認識しているクライアントがあり、クライアントから Engine2 からプロパティ Active を設定したいのですが、クライアントも EngineFacade も 3 つのエンジンのどれが Engine2 であるかを認識していません。
2つの方法がありますが、私はそれらのどれも好きではありません:
- エンジンの 1 つがタイプ Engine2 であるかどうかを確認します。同じタスクを実行するが別の名前の別のクラスがある場合は、EngineBuilder と EngineFacade でそれを変更する必要があります。
- 識別子文字列で確認してください - 私は魔法の文字列があまり好きではありません。
クライアント サイトで私が知っていることは、グリッドを処理するエンジンがある、またはあるべきだということです。しかし、私はもっと知りません。
たぶん、私は 2 人の悪魔のどちらかを選ばなければならないかもしれませんが、どちらかがより良い解決策を持っているかもしれません。