我觉得应该是Abstract Factory模式...可将部门、性别、职称、职务等比较固定的部份定义为产品等级..月工资查询、汇总月查询、年度汇总查询等为产品簇。这样做的好处是在Abstract Factory中,在产品等级结构的数目不变的情况下,增加新的产品族,只需在每一个产品等级结构中增加一个(或者多个)新的具体(或者抽象和具体)产品角色。由于工厂等级结构是与产品等级结构平行的登记机构,因此,当产品等级结构有所调整时,需要将工厂等级结构做相应的调整。现在产品等级结构中出现了新的元素,因此,只需要向工厂等级结构中加入相应的新元素就可以了。
换言之,只需要向系统中加入新的具体工厂类就可以了,没有必要修改已有的工厂角色或者产品角色。因此,在系统中的产品族增加时,抽象工厂模式是支持“开-闭”原则的。

解决方案 »

  1.   

    楼上说的也有道理,我当初也在Abstract Factory和Factory Method之间选择一个.之所以没选择Abtract Factory,是因为Abtract Factory属于平行类层次,需要为每个production产生一个ConcreteFactory,比较烦,而且当增加一个新的production时,需要改动原有的代码,扩展性我觉得不怎么好!
    另外想请教一下你说的"开-闭"原则是怎么回事?谢谢