C2:抽象工厂 Abstract Factory
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.
应用场景:
一系列相互依赖的对象有不同的具体实现。提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合
UML:

代码示例:
abstract class AbstractProductA
{
}
abstract class AbstractProductB
{
}
class ProductA1 extends AbstractProductA
{
}
class ProductA2 extends AbstractProductA
{
}
class ProductB1 extends AbstractProductB
{
}
class ProductB2 extends AbstractProductB
{
}
abstract class AbstractFactory
{
abstract public function createProductA();
abstract public function createProductB();
}
class ConcreateFactory1 extends AbstractFactory
{
public function createProductA()
{
return new ProductA1();
}
public function createProductB()
{
return new ProductB1();
}
}
class ConcreateFactory2 extends AbstractFactory
{
public function createProductA()
{
return new ProductA2();
}
public function createProductB()
{
return new ProductB2();
}
}
// 调用
$factory1 = new ConcreateFactory1();
$factory1->createProductA();
ps:与工厂方法相比,抽象工厂的接口中包含了所有产品的创建.
浙公网安备 33010602011771号