工厂方法,抽象工厂,单例,建造者、原型。
工厂模式:
许多类型对象的创造需要一系列的步骤:你可能需要计算或取得对象的初始设置;选择生成哪个子对象实例;或在生成你需要的对象之前必须先
生成一些辅助功能的对象。在这些情况,新对象的建立就是一个“过程”,不仅仅是一个操作。
包括:工厂方法模式(Factory Method),抽象工厂模式(Abstract Factory)
工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
单例模式:
懒汉式单例,饿汉式单例。
饿汉式单例,天生线程安全。
懒汉式单例,可以通过如下三种方法实现线程安全。
1. 在方法上添加synchronized关键字。
2. 双重检查锁定。
public statid Singleton getInstance(){
if (singleton == null){
synchronized(Singleton.clas) {
if (singleton == null){
single = new Singleton();
}
}
}
return singleton;
}
3. 静态内部类
public class Singleton {
private static class LazyHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return LazyHolder.INSTANCE;
}
}
建造者模式:
适用场合:
创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
建造者模式的构成:
Product,要创建的复杂对象。
builder,接口(包含了各个步骤的函数)。
ConcreteBuilder,对不同Product实现的builder。
Director,调用builder来完成对象的创建。
原型模式:
在java中通过clone实现。
优点:不需要调用构造方法,直接操作内存,快。像复制粘贴一样,简洁。