文档章节

设计模式之创建型模式

白志华
 白志华
发布于 2015/10/18 10:56
字数 1071
阅读 2
收藏 0

 

       随着对软件工程研究的不断深入,设计模式也越来越多了,根据其目的准则,划分如下:

       1. 创建型:creational 与对象的创建有关。

       2. 结构型:Structural 处理类或对象之间的组合。

       3. 行为型:behavioral 描述类或对象如何交互及如何分配职责。

 

       创建型模式抽象了实例化的过程,将关于该系统使用的具体的类的信息封装了起来。允许客户用结构和功能差别很大的产品对象配置一个系统。配置可以是静态的,也可以是动态的。

       通常创建对象的设计都是从工厂方法开始,当设计者发现需要更大的灵活性时,设计变回想其他创建型模式进行演化。

 

其中,创建型模式

       1.抽象工厂模式 AbstractFactory

       2.建造者模式 Builder

       3.工厂方法模式 Factory Method

       4.原型模式 Prototype

       5.单例模式 Singleton  

具体来说:

抽象工厂模式

       抽象工厂模式提供一个创建一系列或相关依赖对象的接口,而无需指定他们具体的类。抽象工厂是工厂方法模型的抽象,每一个具体工厂创建多个产品类的对象。具体工厂类与产品类是一对多的关系。所以具体工厂之间是采用了不同的方法,创建了相同的对象。

在“增加产品族”上,抽象工厂很好地支持了“开放-封闭原则”,但是在“增加新产品的等级结构”上,需要更改所有的工厂类。这有违背了“开放-封闭原则”。所以综合来说,抽象工厂模型以一种倾斜的方式支持增加新的产品,它为新产品族的增加提供了方便,但不能为新产品的等级结构的增加提供同样的方便。

建造者模式

       建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其中Builder定义了构建对象所需的“部件”或者说“步骤”,而ConcreteBuilder提供了几种样本的构建“模版”,Director是决定选择哪个“模版”来构建产品。这就决定了建造者模型可以担当构建复杂对象的重任,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。

由于构建者隐藏了产品的构建细节,所以若要改变一个产品的内部表示,只需要再定一个具体的建造者就可以了。

 

工厂方法模式

       工厂方法模型定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到了其子类中。工厂方法模式是优化的简单工厂模式,它很好的支持了“开闭原则”。每一个具体的工厂只能构建一个类的对象。具体工厂类与产品类是一对一的关系。

 原型模式

       原型模式是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,而无需知道具体的创建细节。

       建立相应数目的原型并克隆他们通常比每次用合适的状态手工实例化该类更方便一些。

       .NET在System命名空间中提供了Icloneable接口,可以通过该接口的Clone()方法来完成原型模式。在使用原型模式中应该注释浅拷贝和深拷贝(针对与引用类型)。

单例模式

       单例模式保证一个类仅有一个实例,并提供一个访问他的全局访问点。单例模式必须自己创建自己的唯一实例。当一个系统要求某个类只要一个实例化对象,即可使用单例模式。

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaoxian8023/article/details/6933972

共有 人打赏支持
白志华
粉丝 32
博文 265
码字总数 57524
作品 0
长沙
程序员
私信 提问
javascript 设计模式之工厂(Factory)模式

工厂模式介绍 工厂模式是一个创建型的模式,主要就是创建对象。其中工厂模式又分为简单工厂模式和抽象工厂模式。简单工厂模式是通过工厂方法确定创建 对应类型的对象。抽象工厂模式是通过子类...

hlxiong
2014/04/14
0
0
JavaScript设计模式入坑

JavaScript设计模式入坑 介绍 设计模式编写易于维护的代码。 设计模式的开创者是一位土木工程师。Σ( ° △ °|||)︴,写代码就是盖房子。 模式 模式一种可以复用的解决方案。解决软件设计中...

小小小8021
10/18
0
0
JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模式、工厂方法模式、单例设计模式之饿汉式和懒汉式、Runtime类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52717096 JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模...

Aduroidpc
2016/10/01
0
0
JavaScript常用设计模式

设计模式 设计模式是一种在长时间的经验与错误中总结出来可服用的解决方案。 设计模式主要分为3类: 创建型设计模式:专注于处理对象的创建 Constructor构造器模式,Factory工厂模式,Singl...

a独家记忆
07/13
0
0
java设计模式-- 单例模式

在很久之前,也就是在大二暑假的时候,那时候看马士兵的视频教程中有提到很多的设计模式。 java的设计模式大致可以分为3大类,23种设计模式。 其中,创建型模式有5种:单例模式、建造者模式、...

爱学习的逃课君
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用JavaScript编写iOS应用业务逻辑

JSAUIKitCocoa使你可以使用JavaScript编写对性能要求不高但可能变动性很大的iOS应用的业务逻辑部分,View组件、需要多线程支持的Model等则直接使用原生对象。 编写方式与React Native相似,但...

neal01
8分钟前
0
0
艺术品区块链溯源防伪平台(连载一)

Netkiller Blockchain 手札 作者正在找工作,联系方式 13113668890 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市望海路半岛城邦三期 518067 +86 13113668890 <netkiller@msn.com> 文档始创...

netkiller-
9分钟前
0
0
0032-如何在CDH启用Kerberos的情况下安装及使用Sentry(二)

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 5.Sentry列权限管理 1.在集群所有节点添加fayson_r用户 [root@ip-172-31-6-148 cdh-shell-bak]# useradd fayson_r[root@i...

Hadoop实操
13分钟前
0
0
Nginx配置中Location的优先级

根据Nginx的官方文档,Location标签一共有四个修饰符,分别是: (1) =:表示完全匹配; (2) ^~:匹配URI的前缀,并且后面的正则表达式不再匹配,如果一个URI同时满足两个规则的话,匹配最长的规...

cloes
昨天
0
0
Xcode 10 Archive 卡死问题

前段时间贪新鲜更新了xcode 10,发现就是自己没事找事后悔啊........ 首先是 libstdc++.6.0.9.tbd 已不被使用,以前的项目是一顿报错!!!一个个改也不是办法还有一些第三方的用到只好把lib...

壹峰
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部