创建型模式
将实例的创建和使用分离,在创建什么、由谁创建、什么时候创建提供灵活性
单例模式
一个类只有一个实例
1. 构造方法私有化构造方法私有化
2. 提供一个获取实例的静态方法
3. 懒汉式:考虑多线程访问的安全性,使用volatitle、synchronized关键字
4. 饿汉式:线程安全,类加载就创建了单例
private static final HungrySingleton instance = new HungrySingleton();
原型模式
用一个已经创建的实例作为原型,通过复制clone该原型对象来创建一个和原型相同或相似的对象。这种方式创建对象非常高效,无需知道对象创建的细节。
1、实现Cloneable接口
2、调用类的clone()方法:注意深克隆和浅克隆
工厂模式
1、简单工厂:创建的产品不多,只要一个工厂就可以完成,当增加新产品时,会违背“开闭原则”;
public class ShapeFactory{
public Shape getShape(String shapeType){
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}
2、工厂方法:每个工厂生产一种产品
3、抽象工厂:每个工厂每个方法生产一种产品
建造者模式
复杂对象由多个子部件按一定的步骤组成。
1、产品product
2、抽象建造者Builder
3、具体建造者
4、指挥者