在下列情况下,我们应当考虑使用抽象工厂模式:
1、一个系统应该不依赖于产品实例被创建,组成和表示的细节。这对于所有形态的工厂模式都是重要的
2、这个系统的产品有多于一个的产品簇;
3、同属于同一个产品族的产品是设计成在一起使用的。这一约束必须得在系统的设计中体现出来。
最后,不同的产品以一系列的接口的面貌出现,从而使系统不依赖于接口实现的细节。
(以下例子引用自网上资料)
1
public
interface
ComputerProducer
{}
2
2
public
class
PCProducer
implements
ComputerProducer
{
RAM createRAM()
{
return new PCRAM();
}
CPU createCPU()
{
return new PCCPU()
}
}
{
RAM createRAM()
{
return new PCRAM();
}
CPU createCPU()
{
return new PCCPU()
}
}
1
public
MacProducer
implements
ComputerProducer
2 {
3 RAM createRAM()
4 {
5 return new MacRAM();
6 }
7 CPU createCPU()
8 {
9 return new MacCPU();
10 }
11}
2 {
3 RAM createRAM()
4 {
5 return new MacRAM();
6 }
7 CPU createCPU()
8 {
9 return new MacCPU();
10 }
11}
1
public
interface
CPU
{}
1
public class
MacCPU
implements
CPU
{}
1
public
class
PCCPU
implements
CPU
{}