读书笔记-创建型设计模式

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

《大话设计模式》中将23种常用的设计模式分为3种类型,创建型、结构型和行为型。设计模式的前提是面向对象编程,目的是实现类的高内聚,低耦合,依据是设计模式的几条原则。

本文主要介绍创建型设计模式,主要有以下几类:

  1. 抽象工厂模式
  2. 建造者模式
  3. 工厂方法模式
  4. 原型模式
  5. 单例模式

创建型模式隐藏了类的实例创建的细节, 整个系统面对是抽象类定义的接口,无须关注类实例的创建、组合等。

抽象工厂(Abstract Factory)模式

抽象工厂模式:提供一个创建一系列或相关依赖对象的接口,而无须指定它们具体的类

如何实现:在简单工厂和工厂方法的基础上扩展,定义抽象的工厂,每一个继承的工厂子类,实现的不是一个,而是多个实例的返回接口。

常见应用:访问数据库的若干个数据表的操作。

优点:构造实例和客户端分离。

缺点:开发量增加

建造者(Builder)模式

建造者模式:将一个复杂对象的构造与表示分离,使得同样的构建过程可以创建不同的表示

如何实现:定义抽象的Builder,每一个继承的Builder实现对象各个部件的构建,Director定义整个构建流程,利用具体的Builder构造对象。

常见应用:当一个对象的构建过程稳定,但是构建方法多样时使用。

优点:对象的构造和表示解耦,要求对象建造顺序通常是稳定的。

工厂方法(Factory Method)

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到其子类

如何实现:在简单工厂模式的基础上改进,定义一个抽象的父类,子类为一个个具体的工厂,每个子类返回一个具体的实例。

常见应用:工厂方法是通常设计的初始模式,当发现需要更多灵活性时,开始考虑采用别的设计模式。

优点:简单工厂的进一步抽象和扩展,克服了简单工厂的封闭-开放原则上的不足。

缺点:每添加一个实例,需要添加一个构造实例的工厂,增加了开发量。

原型(Prototype)模式

原型模式:用原型实例创建指定对象的种类,并且通过拷贝这些原型创建新对象

如何实现:实现一种深拷贝的方法,可以用这个方法构造新的对象。

常见应用:Java Spring引用bean时,默认是单例模式,scope=singleton;如果scope=prototype,会利用再次创建一个新的bean。

单例(Singleton)模式

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点

如何实现:将构造函数定义为private,类中持有一个实例,并提供一个public static的方法返回实例。但是要注意,对于多线程的实现要有加锁和2次持有实例的判空操作。

常见应用:Java 中的单测样例, @Test为单例模式

创建方式:单例模式的创建有2种,一种称为饿汉式,对象被加载时就实例化;第二种称为懒汉式,直到第一次引用时才实例化。

参考文献

大话设计模式 - 程杰 著

猜你喜欢

转载自blog.csdn.net/ymaini/article/details/82563317
今日推荐