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

悄悄话
发表文章: 21
注册时间: 2002年09月22日 11:04
设计模式讨论之abstract factory篇 2002年09月22日 11:08 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
设计模式讨论之abstract factory篇

有人说过,“不写1M行代码,不能看设计模式。”
但似乎设计模式并非那么神奇,下面用笔者的
一点粗浅认识,讨论一下abstract factory设计
模式的主要部分。

首先,为什么要用设计模式?GOF的设计模式
主要是用来减小耦合和提高复用的。而面向对象
的主要原则就是能private的,就不要protected;
能protected,就不要public。尽量不要把一些
重要的细节暴漏给自己的客户类,以免不必要的
出现错误。当然这是从继承的方面来说;而从
多态的方面来说,就是只给客户类暴漏抽象的基类
的接口,而这里所指的接口就是基类的公有的部分。
客户类每多知道抽象基类的具体子类的类型,也就多了
一分耦合。而仅提供抽象基类的接口给外界,
提高了抽象层次,也就是通用性,也就是复用性。

设计模式提倡的是:“优先使用组合,而不是继承”。
但abstract factory模式中,并未使用组合,而只是
依赖(实例化),也就是说abstract factory模式的
内部,仍然有不小的耦合。

Abstract factory主要的好处是,客户代码不仅不知道,
工厂类的具体类型,而且也不知道具体的产品类型,
具体的产品类型信息被封装到具体的工厂中了。所以,
客户类只操纵工厂接口和产品接口,不知道具体的工厂产生
产品的实现细节,创建的复杂性被封装了。

设计模式的主要目标是“把变化的和不变的分离,提高弹性”。
但在abstract factory中,弹性是有限的。即你可以从
抽象基类派生出不同的具体工厂实现生产不同的具体产品,
但所有这些都受限于你的接口,如果产品的改变非常之大,
以至于你的接口变化了,那么客户类的代码也得随之改变。
也就是说,减小耦合失败了。
banq

悄悄话
发表文章: 9484
注册时间: 2002年08月03日 17:08
Re: 设计模式讨论之abstract factory篇 2002年09月22日 13:47 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
说的很好,工厂模式是有一定的局限,设想一下,如果产品的改变非常之大,我们能不能就不必去修改原来的产品接口,而直接做一个新产品接口?

我的经验中,如果两个实体之间有一定差别,就要分别对待,不能象传统编程中,为了可重用,加很多IF语句后,硬是封装在同一个程序中,在Java中稍微有不同就可以做成两个类,这也是减少偶合的一个方面吧。
cc

悄悄话
发表文章: 275
注册时间: 2002年08月07日 23:47
Re: 设计模式讨论之abstract factory篇 2002年09月23日 09:18 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
"abstract factory模式的内部,仍然有不小的耦合"

这句话虽然说得没有问题,但是,abstract factory模式的目的就是提高灵活性,可以随着产品类的组合变化而增加工厂,这与现实很相似的。
这个主题有 2 回复 / 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链接 插入附件
内容
  发贴前查询 标签列表勿重复发表问题

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