"围观"设计模式(29)--创建型设计模式总结(单例、工厂、原型、创建者)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangyang1354/article/details/51868562

设计模式源码下载地址

设计模式源码下载地址


1  单例模式

单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。----维基百科(WIKIPEDIA)

个人的理解:

单例模式概念比较简单,他的目的就是只允许出现一个该类的实例,经常在JDBC操作类等处被用到,我在项目中应用到的地方就是用于获取Dao层的类的实例,单例模式有多种实现方式,这里我认知到的有饿汉式、懒汉式、枚举、静态内部类。庆幸这次整理过程,因为又拓展了不少的单例模式的知识。
"围观"设计模式(7)--创建型之单例模式(Singleton Pattern)


2  简单工厂、工厂方法、抽象工厂

工厂模式的核心思想在我认为是将类创建的权利授予给工厂类,其他的类不允许创建,授予了权限的类创建好之后,需要某些的对象的时候,可以去工厂当中去取。也就是像一个工厂一样,用的人不需要关心对象怎么来的,你只需要关心怎么用就好了。工厂模式细分为三种,简单工厂、工厂方法、抽象工厂三种模式。这三种模式比较相似,往往会引发混淆,本文主要结合实际的例子去进行区分。理清三者之间的关系与适用范围。

概述
简单工厂
对于简单工厂,我个人的理解是,直接实现一个方法,要生产什么由这个方法以及传入的参数来决定。

工厂方法
1. 解决了哪类“工厂”生产哪类东西的问题。
2.这种模式通过公共的接口或抽象类定义生产出来的是哪种东西,但是不限制生产出来的具体产品,在其子类中或者实现类中去确定具体生产出来的是什么东西。

抽象工厂
1. 解决了同一种东西多种分类的情况。
2. 抽象类去设定生产的产品的具体分类,交给子类去实际生产该分类下的产品。

简单的讲,三者最主要的区别在于:
简单工厂:通过参数控制生产的不同的产品。
工厂方法:通过不同的子类工厂生产不同的产品。
抽象工厂:通过方法生产不同的产品。
"围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式


3  创建者模式

生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。----WIKIPEDIA

个人的理解:
建造者模式可以设置不同的属性或者行为,创建出不一样的对象。比如说生产汽车,假如有三个重要的工序,塑形、拼装、上色。那么可以通过创建者模式来设置,这三道工序中不同的车来说,三道工序可能就是不一样的。通过创建者模式来创建出对象的表现形式也自然就不一样。
"围观"设计模式(9)--创建型之创建者模式(Builder Pattern)


4  原型模式

原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。
原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。
原型模式的优点

原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。
注意:
1.原型模式创建对象不会调用构造函数进行创建。直接从内存去赋值对象的数据,忽略构造函数的限制,他和之前提到的单例模式有所冲突,单例模式会将构造函数设置为私有,而原型模式却可以绕过构造函数去通过内存中的对象的数据区创建对象,所以这个地方就会有所冲突。
2. 注意深拷贝和浅拷贝。对于数组、容器对象、对象等可能需要进行深拷贝。
"围观"设计模式(10)--创建型之原型模式(Prototype Pattern)

猜你喜欢

转载自blog.csdn.net/wangyang1354/article/details/51868562
今日推荐