最近在我正在进行的项目中,我遇到了以下问题:
假设我有一组(树状)数据结构:
销售合同
买方
地址
城市
电话
金融
卖方
地址
项目
价格
东西
其他的东西
并且SellingContract会经历几个商业短语,每个短语都必须检查SellingContract数据以确定它是否满足某些特定条件。
首先,我让顶部容器 ( SellingContract) 提供所有条件检查器方法:
SellingChecker.tooMuchItems()
SellingChecker.canProceedToStepXXX()
但每次出现新情况时,我都必须修改SellingContract.
有人可以建议我一种优雅的方法来解决这个问题吗?
目前,我正在考虑两种方法:
应用访问者模式
SellingContract,SellingContract将提供一个方法acceptConditionChecker(ConditionChecker),条件检查器将实现接口ConditionChecker。创建以
SellingContract作为参数的实用程序类,然后检查条件。这种方法要求实用程序类知道它的结构,SellingContract并且对我来说似乎是程序性的。