JiveJdon Community Forums
在线451人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 7 回复 / 1
 发表新帖子   回复该主题贴
ljglory

悄悄话
发表文章: 12
注册时间: 2003年05月30日 20:25
关于对象的建造模式 2003年07月03日 19:32 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
问题是这样的,系统中有很多字典,每个字典都是一个Map,map的key和value组成一个字典项。

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

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

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

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

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

悄悄话
发表文章: 9524
注册时间: 2002年08月03日 17:08
Re: 关于对象的建造模式 2003年07月03日 21:58 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
可以让增加字典这一工作放到xml配置文件中做,不知可否?
wwlhp@jdon.com

悄悄话
发表文章: 111
注册时间: 2003年06月03日 17:19
Re: 关于对象的建造模式 2003年07月04日 08:23 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
我觉得你使用的是静态工厂,静态工厂提供了倾斜的开闭原则支持,也就是说你可以很容易的假如一个新的字典类,但是要在字典工厂里做少量修改。
chenye99

悄悄话
发表文章: 15
注册时间: 2003年06月23日 10:20
Re: 关于对象的建造模式 2003年07月04日 08:52 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
将字典名称和相应DAO的映射关系写在xml文件中,采用动态加载的方式。或者将实例化DAO的操作抽象成一个abstract类,当新加入字典时,编写相应的该abstract类的子类。在当前工厂中根据输入的字段名称动态加载这些子类。
richardluopeng

悄悄话
发表文章: 71
注册时间: 2002年08月30日 15:52
Re: 关于对象的建造模式 2003年07月05日 13:21 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
要作到ocp,可以有许多方式richardluopeng1k7w88g457.gif
ljglory

悄悄话
发表文章: 12
注册时间: 2003年05月30日 20:25
Re: 关于对象的建造模式 2003年07月06日 08:25 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
谢谢各位!两天没有过来,竟然有了这么多回复!

的确,如几位所说,用配置文件来解决映射问题是个不错的办法!
ljglory

悄悄话
发表文章: 12
注册时间: 2003年05月30日 20:25
Re: 关于对象的建造模式 2003年07月06日 08:47 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
chenye99,关于你说的第二种方案,你的意思是把字典的名称和DAO的名称对应起来,使用反射来实例化DAO类,是吧?

当然也是可以的,但是我总是不太喜欢使用反射,只要有可能就不用,呵呵。

谢谢!
chenye99

悄悄话
发表文章: 15
注册时间: 2003年06月23日 10:20
Re: 关于对象的建造模式 2003年07月07日 09:09 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
反射机制是把双刃剑,不过用好了对于程序的灵活性和可扩展性有很多好处。原来我对反射也有抵触心里,不愿意用,不过现在用惯了,觉得还是不错的,hoho
这个主题有 7 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  每2分种自动备份发贴内容Ctrl-V粘贴取出,提问题前先查询标签列表

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam