工厂方法模式(别名Virtual Constructor)定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
特点:
原则:
依赖倒置原则:要依赖抽象,不要依赖具体类。
依赖倒置的指导方针:
实现:

抽象工厂(工厂方法模式的核心,也可以是抽象类):
public interface Creator
{
public Product factory();
}
具体工厂:
public class ConcreteCreator1 implements Creator
{
public Product factory()
{
return new ConcreteProduct1();
}
}
public class ConcreteCreator2 implements Creator
{
public Product factory()
{
return new ConcreteProduct2();
}
}
抽象产品:
public interface Product
{
}
具体产品:
public class ConcreteProduct1 implements Product
{
public ConcreteProduct1()
{
System.out.println("CocnreteProduct1 is being created.");
}
}
public class ConcreteProduct2 implements Product
{
public ConcreteProduct2()
{
System.out.println("CocnreteProduct2 is being created.");
}
}
适用性:
在以下情况下,适用于Factory Method模式:
参与者:
Creator:
声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
4. ConcreteCreator:实现Creator以返回一个ConcreteProduct实例