1.简单工厂模式:
创建一个工厂类,在类中一个创建静态工厂方法,
可以通过传值或者是读取配置文件的方式去加载 父类、接口,然后new出相应子类的实例,用父类或接口去接收,实现多态,称为简单工厂模式,也称静态工厂方法模式。
2.单例模式:
单例模式设计要点
保证该类只有一个实例。将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象
提供一个该实例的访问点。一般由该类自己负责创建实例,并提供一个静态方法作为该实例的访问点
饿汉 vs. 懒汉
饿汉 声明实例引用时即实例化
懒汉 静态方法第一次被调用前不实例化,也即懒加载。对于创建实例代价大,且不定会使用时,使用懒加载模式可以减少开销
正确双重检查(Double Check)下的懒汉 - 推荐
优点:使用了双重检查,同时使用volatile修饰INSTANCE,避免由于多线性同步和可见性问题造成的多实例
1 | package com.jasongj.singleton5; |
静态常量 饿汉 - 推荐
优点:实现简单,无线程同步问题
缺点:在类装载时完成实例化。若该实例一直未被使用,则会造成资源浪费
1 | package com.jasongj.singleton6; |