一. 定义
- 引入抽象工厂类,具体产品的创建过程封装在抽象工厂的子类,通过工厂子类来确定实例化哪个具体产品类,增加新产品类时只需增加相应的具体工厂类。(一个产品等级结构)
二. 模式结构

1. Product(抽象产品)
2. ConcreteProduct(具体产品)
3. Factory(抽象工厂)
4. ConcreteFactory(具体工厂)
三. 实例

1. TVFactory/HaierFactory/MeiDifactory
public interface TVFactory
{
public TV produceTV();
}
public class HaierFactory implements TVFactory
{
@Override
public TV produceTV() {
System.out.println("海尔工厂生产海尔TV");
return new HaierTV();
}
}
public class MeiDiFactory implements TVFactory{
@Override
public TV produceTV() {
System.out.println("美的工厂生产美的TV");
return new MeiDiTV();
}
}
2. TV/HaierTV/MeiDiTV
public interface TV
{
public void play();
}
public class HaierTV implements TV
{
@Override
public void play()
{
System.out.println("海尔TV播放中");
}
}
public class MeiDiTV implements TV
{
@Override
public void play()
{
System.out.println("美的TV播放中");
}
}
3. Client
public class Client
{
public static void main(String[] args) throws Exception
{
//生产海尔TV
HaierFactory haierFactory=new HaierFactory();
HaierTV haierTV= (HaierTV) haierFactory.produceTV();
haierTV.play();
//生产美的TV
MeiDiFactory meiDiFactory=new MeiDiFactory();
MeiDiTV meiDiTV= (MeiDiTV) meiDiFactory.produceTV();
meiDiTV.play();
}
}