关于审核策略的设计的问题


对上图的说明:
1. Payment是需要审核的对象,一个Payment对象包含0到多个Reivews(审核记录)
2. ReviewStrategy为审核策略,需要设计一个功能来设置审核策略。一个审核策略包含多个ReviewStep(审核步骤);同时也包含多个ReviewObject(这个审核策略对应需要审核的对象描述)

问题:(以java为编程语言,不考虑使用jBMP)
对于需要审核的对象,我采用ReviewObject对象中的className来代表,也即需要审核对象的类名称,比如ReviewObject.className = “Payment”,ReviewObject.description = “付款”,
但是总感觉以类名来代表被审核对象不是很理想。
请问我这样的设计是否合适?一般应该采用何种设计来应对这种情况?

[该贴被cleanearth于2010-12-17 09:42修改过]

你的设计目标是什么?哪些是将会变化的,确定你需要灵活性的地方,然后我们才能确定实现灵活性的方式。

比如仓库的入库单需要审核,变化的地方是“入库单需要哪些人审核”和“这些人审核的顺序”,
上图中的ReviewStrategy就是对应这两个需求点,

而具体审核时,则给入库单关联上Reviews(审核记录),来表示审核策略中的某个人有没有进行审核,
如果审核策略中的所有人已经审核,则表示入库单已经审核