- 工厂模式,将创建对象实例的任务交给工厂去完成,让使用者和被使用者之间的解耦
- 工厂模式和单例模式是最佳的合作伙伴,可以搭配使用
比如,我实现一个抽象工厂的案例
- 先用枚举搞一个单例对象
public enum Singleton {
INSTANCE;
}
- 编写一个抽象工厂
/**
* 抽象的工厂
*/
public interface AbsFactory {
//定义一个创建类实例的方法,交给子类工厂去实现
public Object createInstance ();
}
- 让具体的子类去继承 实现抽象工厂
/**
* 子类工厂 实现抽象工厂中创建类实例的方法
*/
public class SpecificFactory_1 implements AbsFactory {
@Override
public Object createInstance () {
//比如我在这里创建一个Singleton实例
return Singleton.INSTANCE;
}
}
- 现在 B类想要获得Sington 的实例,可以通过依赖AbsFactory 去获得
public class B {
//依赖对象singleton
private Object singleton;
public B (AbsFactory absFactory) {
this.singleton = absFactory.createInstance();
}
}
- 现在可以这么创建B
//传入对应的子类工厂
new B(new SpecificFactory_1());
实现了了 对象的使用 和 对象创建 之间的解耦
工厂模式在Jdk中的应用
例如 获取日历类Canlendar,不是通过我们自己去new 而是调用Canlendar.getInstance()方法,
由Canlendar 帮我们去new 出对象