工厂方法模式
1.定义:
指定义一个创建对象的接口,但由实现这个接口的类来决定实例化哪个类,工厂方法把类的实例化放到子类中进行。
2.优点:
如果每个对象的创建逻辑都有区别,工厂的职责会变得越来越多,不便于维护,工厂方法模式对每一个对象都有专门的工厂。
3.工厂方法模式的四个角色
抽象工厂:工厂方法模式的核心,该模式中任何创建对象的工厂都要实现该接口。
具体工厂:实现抽象工厂的具体工厂类,包含创建对象的逻辑,被应用程序调用以创建对象。
抽象对象:工厂方法模式所创建的对象的超类
具体对象:实现了抽象对象角色所定义的接口,某对象由某一具体工厂创建。
4.工厂方法模式的简单实现
public interface IFactory {//抽象工厂
IProduct makeProduct();
}
public class FactoryA implements IFactory {//创建A产品的工厂
@Override
public IProduct makeProduct() {
return new ProductA();
}
}
public class FactoryB implements IFactory {//创建B产品的工厂
@Override
public IProduct makeProduct() {
// TODO Auto-generated method stub
return new ProductB();
}
}
public interface IProduct {//抽象对象
void doSomeThing();
}
public class ProductA implements IProduct {//具体对象A
@Override
public void doSomeThing() {
// TODO Auto-generated method stub
System.out.println("A");
}
}
public class ProductB implements IProduct {//具体对象B
@Override
public void doSomeThing() {
// TODO Auto-generated method stub
System.out.println("B");
}
}
public class Client {
public static void main(String[] args) {
IFactory factoryA = new FactoryA();//创建A工厂创建
IFactory factoryB = new FactoryB();//创建B工厂创建
IProduct productA = factoryA.makeProduct();//A工厂创建A对象
IProduct productB = factoryB.makeProduct();//B工厂创建B对象
}
}