创建型设计模式简介

阅读本文大概需要5分钟

image

tips:每次都回忆一下面向对象六大原则,心里默默回想一下是如何描述的吧

  1. 单一职责
  2. 开闭原则
  3. 里氏替换原则
  4. 依赖倒置原则
  5. 接口隔离原则
  6. 迪米特原则

23种设计模式可以分类成行为型、创建型以及结构性,下面我们对创建型的几种设计模式来进行简单的分析讲解,同时加深我们对设计模式的理解

单例模式(Singleton Pattern)

  • 定义

    确保一个类只有一个实例,并提供全局访问点

  • 要点

    • 单例模式取保程序中只有一个类最多只有一个实例
    • 单例模式也提供访问这个实例的全局点
    • 实现单例模式需要有私有的构造器,一个静态方法和一个静态变量
  • UML类图

image

关于工具类和单例的区别

  • 工具类不保存状态,只提供一些静态方法或静态属性对外使用;单例类则可以保存状态
  • 工具类是一些方法的属性集合;单例类则是有着唯一的对象示例
  • 工具类不能继承多态;单例类则可以有子类来继承

原型模式(Prototype Pattern)

  • 定义

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

  • 要点

    • 向客户隐藏了制造新实例的复杂性
    • 提供让客户能够产生未知类对象的选项
    • 在某些环境下,复制对象比创建对象更有效
  • UML类图

image

需要关注的地方在于浅拷贝和深拷贝的区别
如果字段是指类型,则对该字段执行逐位复制;如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复制对象引用同一对象。

Builder模式(Builder Pattern)

  • 定义

    封装一个产品的构造过程,并允许按步骤构造

  • 要点

    • 将一个复杂对象的创建过程封装起来
    • 允许对象通过多个步骤来创建,并且可以改变过程
    • 产品的实现可以被替换,对外只有一个接口
  • UML类图

image

工厂模式(Factory Method Pattern)

  • 定义

    定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化延迟到子类。

  • 要点
  • UML类图

image

抽象工厂模式(Abstract Factory Pattern)

  • 定义

    创建的类属于一个系类,即对外可以有相同的接口的话,可以用工厂模式

  • 要点
  • UML类图

image

那么工厂模式和抽象工厂模式的区别是什么

  • 工厂模式:一个产品抽象类,可以派生多个子类;抽象工厂模式:可以派生出多个具体工厂类。

上述设计模式相关代码已经上传到github仓库中https://github.com/JocherCH/java-pattern; 本文首发https://jocherch.github.io;依次会上传到csdn,知乎,微信公众号上。欢迎大家来给建议~~

RiderWu wechat
欢迎您扫一扫上面的微信公众号,目前试运营当中。