1.工厂方法模式是在简单模式上的加强,它的factory模式不在是创建对象,而是把工厂抽象化一个接口,在由具体的子类去实现不同的功能.
2.使用场景:
对于某个产品,调用者清楚知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来;只是需要一种产品,对于那个工厂生产的并不关心,最终选用哪个具体工厂由生产者一方决定,它根据当前系统的情况来实例化一个具体的工厂返回给使用者,这个决策过程对于使用者来说是透明的。
3.代码示例:
//抽象产品
public interface Light{
public void TurnOn();
public void TrunOff();
}
//具体产品
public class BullbLight implements Light{
public void TurnOn(){}
public void TrunOff(){ }
}
//具体产品
public class TubeLight implements Light{
public void TurnOn(){
}
public void TrunOff(){
}
}
//抽象工厂
public interface Creator{
public Light factory();
}
//具体工厂
public class BullbCreator implements Creator{
public Light factory(){
return new BullbLight();
}
}
//具体工厂
public class TubeCreator implements Creator{
public Light factory(){
return new TubeLight();
}
}
//测试
public class Client{
public static void main(String[] args){
Creator create = new BullbCreator();
Light bullbLight = create.factory();
bullbLight.TurnOn();
Creator create1 = new TubeCreator();
Light tubebLight = create.factory();
tubebLight.TurnOn();
}
}