【软考总结】设计模式之创建型

    之前学习过几遍设计模式,在这次软考准备过程中,对设计模式又进行了系统的复习,以下是我的小小收获。

***************************************创建型***********************************************

1、 抽象工厂 Abstract    VS  工厂方法 Factory Method
   抽象工厂解决需要提供多种业务,多种产品的问题,比如《大话设计模式》中提到的两种类型的数
据库和每种数据库下的增删改,每种类型抽象出一个接口,数据库抽象出一个接口,而反射解决了更换“数据库类型”这种分支的方法。工厂方法针对一个产品等级结构,可以说,一个大棚种一个类型的蔬菜。
   可参考:http://blog.csdn.net/wyxhd2008/article/details/5597975

2、生成器/建造者 Builder
   关键在指挥者 Director,将不变的建造过程封装到Director中,main直接调用Director来完成操作,不用知道内部具体过程,所以,可以在不用通知main的情况下,更换结构,用户只知道Director。并且,可以相同的构建过程通过不同的建造者得到不同的结果。
   应用场景:玩游戏的时,每关的地图都会变化,简单说,地图会有晴天和阴天之分,那么创建地图时就要根据晴天或者阴天来对地图上的场景,比如:天空,树,房子,和路面进行渲染,这个过程是一个固定的,每创建一个新地图都要执行这几个渲染,这是针对高级配置的电脑来说的。现在拥有低配置电脑的人不在少数,针对低配的电脑只要将地图中占用资源比较高的渲染去掉就可以,比如带反射光影的树,这时候需要创建不同的地图,但地图的创建过程却是固定的,建造者模式完全可以应对这样的情况。
   可参考:http://www.cnblogs.com/xieweikai/p/6826481.html
 
3、原型模式 Prototype
   创建原型实例指定创建对象的类型,复制原型得到与此类型相同的对象。
   复制使用了Memberwise Clone 的方法,由于这个方法执行复制时,对值类型的字段进行逐位复制,对引用类型的字段,只能复制引用,所以,用浅复制解决复制值类型字段,深复制解决复制引用类型字段。
   应用场景:如果创建新对象成本较大,我们可以利用已有的对象进行复制来获得。原型模式向客户隐藏了创建对象的复杂性。客户只需要知道要创建对象的类型,然后通过请求就可以获得和该对象一模一样的新对象,无须知道具体的创建过程。
   可参考:http://cmsblogs.com/?p=367
 
4、单例模式 Singleton

   一个类仅有一个实例,并提供一个访问它的全局访问点。
   单例模式的应用,大家都比较熟悉,不再赘述。要注意,单例模式中的双重锁(多线程)和懒、饿汉两种生成方法(要空间还是要时间的问题)。

总结:
    根据需求,花式创建对象。


评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王师傅66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值