设计模式---创建型模式

        创建型模式总共有5种,即抽象工厂、生成器、工厂方法、原型和单例。其中单例模式和其他模式没有相似性,所以,本文主要简单介绍和比较前面四种模型。

        一、抽象工厂模式

        类图如下(图片都摘自《设计模式》):

        

1、抽象工厂创建的是一系列产品,如上图,ConcreateFacrory1和ConcreateFactory2分别创建自己系类的productA和productB。而工厂方法中,每个工厂只创建一种产品。

2、设计模式可分为对象创建型和类创建性。顾名思义,对象创建型就是先创建一个工厂对象,再由对象来创建产品实例。而类创建型是直接由类来创建产品实例。抽象工厂是属于对象创建型的,所以,实现的过程是,创建一个工厂实例,再由这个实例在创建一系类的产品实例。

3、抽象工厂方法易于替换产品系类,但难以增加产品种类。而工厂方法刚好相反,易于添加产品种类。


二、生成器模式


1、适用于构造复杂的产品,如上图所示,可能会有多个不同的buildPart()函数,用来协调构建产品。getResult()方法用来获取最终产品。

2、产品没有抽象类,产品差别大,客户端来选择生成器,所以客户端知道产品的类型。

3、构造请求的结果(bulidPart())只是被添加到最终产品中。


三、工厂方法


1、有一种实现方式是,参数化工厂方法,就是有写地方提到的简单工厂方法。

2、会创建多个工厂子类。可以使用模板以避免创建子类。如java中,可以使用反射机制来创建对象,每次传递一个Class对象给工厂函数,工厂函数再调用Class对象的newInstance等构造函数,即可创建产品对象。这样就可以避免工厂子类的创建。

3、工可以提供一个缺省的实现。


四、原型模式


1、原型是一个特定状态的对象。如果两种类型仅仅是状态的不同,就可以使用原型模式。如书中提到的例子,全音符和半音符可以是同一个类的两种不同状态。

2、相对于工厂方法,可以减少工厂子类。

3、使用时,需要一个原型管理器,还需要一个用于克隆的构造器。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值