锁定老帖子 主题:“学习OO好榜样”之创建类模式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-22
周末再翻《Java与模式》,说说对创建类模式的一点理解。大家交流。 创建类模式,我主要关注的是Simple Factory、Factory Method、Builder这几个。 首先,说说Simple Factory。 Factory Method。 Abstract Factory。 Builder。 再罗索一遍,创建类模式都是对实例创建过程的封装,不同模式适用于不同情况,使用得是否得当我觉得就是看对变化的封装做得好不好。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-08
AbstractFacotry和FactoryMethod有不同的适用方面。
这里我介绍一下 AbstractFacotry。 对于FactoryMethod,所有的商品都是同一种东西,实现一个身份接口。这时统计具体商品只是一条直线。 但是,这并不能满足所有的情况,比如,对于一个C/S结构的控件来说,我们可以把它们分为文本框、下拉框、滚动条等等,这是按照使用分类;但是,我们还可以按照操作系统分类,比如Windows的各种控件、Unix的各种组件。 这样,我用代码写一下看看。 public interface 文本框{} public interface 下拉框{} public class Windos文本框{...} public class Windos下拉框{...} public class Unix文本框{...} public class Unix下拉框{...} public abstract class AbstractFactory{ public abstract 下拉框 get下拉框(); public abstract 文本框 get文本框(); } public class WindowsFactory extends AbstractFactory{ public 下拉框 get下拉框(){ return new Windows下拉框();} public 文本框 get文本框(){ return new Windows文本框();} } 同理public class UnixFactory extends AbstractFactory{...} 因此,可以看到,对FactroyMethod的具体商品的管理是一条直线,而对AbstractFacotry的具体商品的管理是一个二维表。 但是,需要指出的是AbstractFactory是一种倾斜的“开闭”,即,如果增加一种操作系统,非常容易,可以不修改原来的代码,但是如果每种操作系统都要增加一种控件,就需要所有的具体工厂和抽象工厂。 以上,就是我对AbstractFactory的理解,希望大家斧正。 |
|
返回顶楼 | |
浏览 4041 次