阅读本文大概需要5分钟

tips:每次都回忆一下面向对象六大原则,心里默默回想一下是如何描述的吧
- 单一职责
- 开闭原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 迪米特原则
23种设计模式可以分类成行为型、创建型以及结构性,下面我们对创建型的几种设计模式来进行简单的分析讲解,同时加深我们对设计模式的理解
单例模式(Singleton Pattern)
定义
确保一个类只有一个实例,并提供全局访问点
要点
- 单例模式取保程序中只有一个类最多只有一个实例
- 单例模式也提供访问这个实例的全局点
- 实现单例模式需要有私有的构造器,一个静态方法和一个静态变量
UML类图

关于工具类和单例的区别
- 工具类不保存状态,只提供一些静态方法或静态属性对外使用;单例类则可以保存状态
- 工具类是一些方法的属性集合;单例类则是有着唯一的对象示例
- 工具类不能继承多态;单例类则可以有子类来继承
原型模式(Prototype Pattern)
定义
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
要点
- 向客户隐藏了制造新实例的复杂性
- 提供让客户能够产生未知类对象的选项
- 在某些环境下,复制对象比创建对象更有效
- UML类图

需要关注的地方在于浅拷贝和深拷贝的区别
如果字段是指类型,则对该字段执行逐位复制;如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复制对象引用同一对象。
Builder模式(Builder Pattern)
定义
封装一个产品的构造过程,并允许按步骤构造
要点
- 将一个复杂对象的创建过程封装起来
- 允许对象通过多个步骤来创建,并且可以改变过程
- 产品的实现可以被替换,对外只有一个接口
- UML类图

工厂模式(Factory Method Pattern)
定义
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化延迟到子类。
- 要点
- UML类图

抽象工厂模式(Abstract Factory Pattern)
定义
创建的类属于一个系类,即对外可以有相同的接口的话,可以用工厂模式
- 要点
- UML类图

那么工厂模式和抽象工厂模式的区别是什么
- 工厂模式:一个产品抽象类,可以派生多个子类;抽象工厂模式:可以派生出多个具体工厂类。
上述设计模式相关代码已经上传到github仓库中https://github.com/JocherCH/java-pattern; 本文首发https://jocherch.github.io;依次会上传到csdn,知乎,微信公众号上。欢迎大家来给建议~~