设计模式 factory + builder

设计模式 factory + builder

ID:5568438

大小:368.50 KB

页数:15页

时间:2017-11-13

设计模式 factory + builder_第1页
设计模式 factory + builder_第2页
设计模式 factory + builder_第3页
设计模式 factory + builder_第4页
设计模式 factory + builder_第5页
资源描述:

《设计模式 factory + builder》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Factory工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定哪一个类实例华,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态:简单工厂模式(SimpleFactory)又称静态工厂方法模式(StaticFactoryMethodPattern)工厂方法模式(FactoryMethod):又称多态性工厂模式(PolymorphicFactory)或者虚拟构造子模式(VirtualConstructor)抽象工厂模式(AbstractFactory)又称工具模式(Kit或者Toolkit)SimpleFactor

2、y在面向对象的程序中经常见到的一种模式就是简单工厂模式(SimpleFactory)。一个简单工厂模式根据所提供的数据返回某个类的一个实例,此类是多个可能的类中的一个。通常它返回的类都具有共同的父类和共同的方法,但是每个类执行的任务各不相同,并且针对不同类型的数据进行了优化。简单工厂模式涉及到工厂角色、抽象产品角色以及具体产品角色工厂类(Creator)角色:担任这个角色是工厂方法模式的核心,含有与应用紧密相关的业务逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体Java类实现。抽象产品(Product)角色:担任这个角

3、色的类是由工厂方法模式所创建的对象的父类,或它们共同拥有的接口。抽象产品角色可以用一个Java接口或者Java抽象类实现。具体产品(ConcreteProduct)角色:工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体Java类实现。事例请参见工程Factorycom.nect.simpleFactory包下事例简单工厂模式首先要创建一个提取方法,他能在多个可能的类中决定返回哪一个类的实例,并将其返回。然后就可以调用该类实例的方法,而不必了解实际使用的是哪一个子类。FactoryMethod工厂方法模式是一种更灵

4、活的模式,它扩展了子类实例化的思想,即不再由单个工厂类决定到底应该实例化哪个子类。而超类则会将这一决定推迟到每个子类中完成。抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。具体工厂(ConcreteCreator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品

5、对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。具体产品(ConcreteProduct)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。事例请参见工程Factorycom.nect.methodFactory包下事例工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况

6、下引进新的产品。FactoryMethod与SimpleFactory区别工厂方法模式与简单工厂模式再结构上的不同不是很明显。工厂方法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工厂类都有共同的接口,或者有共同的抽象父类。当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,很好的符合了“开放-封闭"原则。而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好AbstractF

7、actory抽象工厂模式是比工厂方法模式更抽象的一种模式。使用这种模式能返回多个相关对象类别中的一个。抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式需要面对多个产品等级结构抽象工厂(AbstractFactory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统商业逻辑无关的。具体工厂(ConcreteFactory)角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。抽象产品(AbstractPr

8、oduct)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。具体产品(ConcreteProduct)角色:抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例。这是客户端最终需要的东

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。