关于对象的建造模式

03-07-03 ljglory
问题是这样的,系统中有很多字典,每个字典都是一个Map,map的key和value组成一个字典项。

我使用简单工厂模式做了一个字典工厂,字典工厂根据用户输入产生用户所需的字典。

字典工厂的职责是,获取用户输入参数(就是一个表示字典名称的String),然后根据这个字典名称实例化对应的DAO(通过一串if else语句),使用DAO查询数据库中对应字典表,获得一个List,再把这个List做成一个Map,返回给客户端。

现在的问题是,在增加字典的时候,如何设计才能保证不用修改字典工厂的代码,即对扩展开放,对修改关闭?

这个问题与工厂模式已经抽象工厂模式所要解决的问题还不一样,工厂模式和抽象工厂模式的目的是要建造不同的产品和不同体现的产品。而在这个问题中,产品都是Map,各个产品的区别仅仅在于数据或者说内容的不同。

大家给我出出主意吧,谢啦。

banq
2003-07-03 21:58
可以让增加字典这一工作放到xml配置文件中做,不知可否?

wwlhp@jdon.com
2003-07-04 08:23
我觉得你使用的是静态工厂,静态工厂提供了倾斜的开闭原则支持,也就是说你可以很容易的假如一个新的字典类,但是要在字典工厂里做少量修改。

chenye99
2003-07-04 08:52
将字典名称和相应DAO的映射关系写在xml文件中,采用动态加载的方式。或者将实例化DAO的操作抽象成一个abstract类,当新加入字典时,编写相应的该abstract类的子类。在当前工厂中根据输入的字段名称动态加载这些子类。

richardluopeng
2003-07-05 13:21
要作到ocp,可以有许多方式richardluopeng1k7w88g457.gif

猜你喜欢
2Go 1 2 下一页