最近、私が取り組んでいるプロジェクトで、次のような問題に巻き込まれました。
(ツリーのような) データ構造のセットがあるとします。
販売契約 買い手 住所 街 電話 ファイナンス 売り手 住所 アイテム 価格 もの 他のもの
そして、SellingContract
いくつかのビジネス フレーズを通過し、それぞれがSellingContract
特定の条件を満たしているかどうかを判断するためにデータをチェックする必要があります。
最初に、トップ コンテナー ( SellingContract
) がすべての条件チェッカー メソッドを提供するようにします。
SellingChecker.tooMuchItems()
SellingChecker.canProceedToStepXXX()
しかし、新しい条件が発生するたびに、SellingContract
.
この問題を解決するためのエレガントな方法を提案してくれる人はいますか?
現在、次の 2 つの方法を検討しています。
にビジター パターンを適用すると
SellingContract
、SellingContract
はメソッドを提供しacceptConditionChecker(ConditionChecker)
、条件チェッカーは インターフェースを実装しますConditionChecker
。SellingContract
パラメータとして受け取るユーティリティ クラスを作成し、状態を確認します。このアプローチでは、ユーティリティ クラスが構造を知っている必要があり、SellingContract
手続き的なように思えます。