创建型模式用于如何更好、更高效、更容易的创建对象

单例模式

懒汉式:(线程安全,调用效率高,不能延迟加载)java.lang.RunTime

饿汉式:(调用效率不高,可以延迟加载)java.awt.Toolkit.getDefaultToolkit()


双重检测琐式(java volatile关键字修改,由于jvm底层内部模型原因,偶尔会出问题,不建立使用)


静态内部类式(线程安全,调用效率高,可以延迟加载)


枚举单例(线程安全,调用效率高,不能延迟加载,防止反射和反序列化漏洞)java.lang.Thread.State


工厂模式

简单工厂模式(静态工厂模式):不修改工厂类无法扩展,违背OCP


工厂方法模式:定义工厂接口,实现多个工厂:不修改已有类的前提下,通过新增工厂类实现扩展


抽象工厂模式: 多个产品簇,不可以增加产品,可以增加产品簇


应用场景:

JDK Calendar getInstance方法

JDBC Connection对象的获取

Hibernate Session创建

spring  bean对象管理

XML DocumentBuilderFactory

Class newInstance方法


建造者模式

分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用;


由于构建和装配分离,可以实现更好的复用


开发中应用场景:

StringBuilder append

SQL PreparendStatement

JDOM DomBuilder SAXBuilder



原型模式(prototype)

通过new产生一个对象需要非常繁琐的数据准备和访问权限,则可以使用原型模式


浅克隆:

对于引用对象,如果修改了其中一个,则均变化

深度克隆:(利用序列化和反序列化技术)

对象的引用对象也要进行克隆