C2:抽象工厂 Abstract Factory

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.

应用场景:

一系列相互依赖的对象有不同的具体实现。提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合

UML:

C2:抽象工厂 Abstract Factory

代码示例:

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:与工厂方法相比,抽象工厂的接口中包含了所有产品的创建.

上一篇:zsh,oh-my-zsh,antigen使用记录


下一篇:java基础高级2 MySQL 高级