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

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

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


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



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



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



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






相关文章
|
5月前
|
设计模式
**工厂模式与抽象工厂模式**都是创建型设计模式,用于封装对象创建,减少耦合
【6月更文挑战第23天】**工厂模式与抽象工厂模式**都是创建型设计模式,用于封装对象创建,减少耦合。工厂模式专注于单个对象,通过具体工厂创建具体产品,适用于简单对象创建;抽象工厂则关注一系列相关产品,提供创建一族对象的接口,适用于处理多个不兼容产品族。选择模式基于问题域的复杂性,单个产品需求时用工厂模式,多产品族时用抽象工厂模式。
33 5
|
6月前
|
设计模式 搜索推荐 数据库连接
第二篇 创建型设计模式 - 灵活、解耦的创建机制
第二篇 创建型设计模式 - 灵活、解耦的创建机制
|
5月前
|
设计模式 Oracle Java
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。
【6月更文挑战第20天】工厂模式简化对象创建,根据参数或条件生成MySQL或Oracle数据库连接。`DatabaseConnectionFactory`作为工厂,动态返回具体连接类型。装饰器模式则用于运行时动态增加对象功能,如`LoggingDecorator`为`Runnable`对象添加日志记录,保持代码整洁。在`Main`类中展示了如何使用这两种模式。
42 6
|
5月前
|
设计模式
创建型设计模式之建造者模式
创建型设计模式之建造者模式
|
6月前
|
设计模式 测试技术 Go
[设计模式 Go实现] 创建型~ 原型模式
[设计模式 Go实现] 创建型~ 原型模式
|
6月前
|
设计模式 测试技术 Go
[设计模式 Go实现] 创建型~工厂方法模式
[设计模式 Go实现] 创建型~工厂方法模式
|
6月前
|
设计模式 测试技术 Go
[设计模式 Go实现] 创建型~建造者模式
[设计模式 Go实现] 创建型~建造者模式
|
6月前
|
设计模式 JavaScript 前端开发
[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
|
6月前
|
设计模式 缓存 架构师
创建型设计模式的比较与决策
本文深入探讨六种创建型设计模式:单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。通过概述各模式的核心概念、应用场景和关键要素,帮助读者理解并掌握这些模式的核心思想。文章还通过比较表和决策流程图,直观地展示了各模式之间的差异和选择依据,为读者提供了实用的设计模式选择指南。 本文的特色在于结合了理论与实践,每个模式都配有详细的代码示例和结构图,帮助读者更好地理解和应用这些模式。 总之,本文旨在为读者提供一篇全面、深入且实用的创建型设计模式指南,帮助读者在实际工作中灵活运用这些模式...
113 0
创建型设计模式的比较与决策
|
6月前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 对象的克隆~原型模式
[设计模式Java实现附plantuml源码~创建型] 对象的克隆~原型模式