设计模式面面观(8):创建型模式总结

本文总结了创建型设计模式的特点及应用,包括单例、原型、工厂、抽象工厂、生成器等模式,并探讨了它们各自的优势与局限性。

创建型模式总结创建型模式总结

1. 创建型模式成员

温故而知新,看完前面7章的朋友首先闭上眼睛认真的想想一个很简单的问题:创建型模式到底有几种模式?

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 141.75pt; HEIGHT: 172.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CWensi%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg" o:title="创建型模式成员"></imagedata></shape>

这里我特意排了下次序,依据实现的难易程度由左到右递增。

2. 创建型模式讨论

l 特点:创建型模式他主要解决的是对新类创建(New)动作的封装处理,所以我把创建型模式归结为对新实体的创建工作中存在变化的地方进行封装,除Singleton模式外其他模式都是解决的new带来的耦合关系。

l 优点:

1) 动态创建新的实体类,用户可以根据不同的需求创建不同的产品类(擅长处理易变类的创建工作)

2) 将类创建工作与业务逻辑操作分开,形成独立的创建环境,用户可以依据自己的需要创建适合自己的实体类。

l 缺点:

1) 每创建一个实例类都要额外的去创建一个创建这个实例类的类(工厂类),Prototype模式其实也是一个工厂,只不过他的工厂就是本身而已,所以Prototype严格上来说他是一个特殊的工厂

2) 由于1)的问题存在所以我们在创建实体类是,需要重复定义他的创建类。这个我们在抽象工厂中提到过这个问题当产品系列增加新品种的时候抽象工厂模式必须调整各个工厂类的实例方法(体力活)

l

3. 各模式的解决方向汇总表

模式名称

适用环境

主意

单件模式(Singleton

控制类实例化个数(通常为单个)

可以通过他的实现原理解决创建固定类实例个数的需求

原型模式(Prototype

通过克隆解决一些类操作接口固定的易变类实例,原型模式可以用工厂、抽象工厂、生成器模式相互转换

合理利用原型模式可以规避一些工厂模式创建工厂类的繁琐工作

工厂模式 (Factory)

动态实例化一个客户需要的类,不考虑类的其他复杂变化需求

我们在用创建型模式解决问题时通常是从工厂模式开始设计,当遇到复杂变化时,在考虑重构为其他三种工厂模式(Abstract Factory,Builder,Prototype

抽象工厂模式(AbstractFarctory

擅长与创建相关,相互依赖的系列类,把正在创建类实例的工作下放到子类工厂去操作

抽象工厂是对一系列的类创建工作,提出的一种解决方案

生成器模式(Builder

创建一个有多个类,按照一定业务逻辑组合的复合型类

针对复杂类创建工作提出的解决方案

创建型模式

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值