1,抽象工厂(Abstract Factory)模式,是创建设计模式的一种,它创建一系列相关的对象,而不必指定具体的类。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系列的产品族创建一个具体的工厂类。
主要角色:
抽象工厂(Abstract Factory)角色:它声明创建抽象产品对象的接口
具体工厂(Concrete Factory)角色:实现创建产品对象的操作
抽象产品(Abstract Product)角色:声明一类产品的接口
具体产品(Concrete Product)角色:实现抽象产品角色所定义的接口
2,例子
//抽象A产品
interface ProductA
{
public function show();
}
class RedA implements ProductA
{
public function show()
{
echo '商品:RedA';
}
}
class BlueA implements ProductA
{
public function show()
{
echo '商品:BlueA';
}
}
//抽象B产品
interface ProductB
{
public function show();
}
class RedB implements ProductB
{
public function show()
{
echo '商品:RedB';
}
}
class BlueB implements ProductB
{
public function show()
{
echo '商品:BlueB';
}
}
//抽象工厂
interface Abstractfactory
{
public function createA(): ProductA;
public function createB(): ProductB;
}
//具体工厂Red
class Redfactory
{
public function createA():ProductA
{
return new RedA();
}
public function createB():ProductB
{
return new RedB();
}
}
//具体工厂Blue
class Bluefactory
{
public function createA()
{
return new BlueA();
}
public function createB()
{
return new BlueB();
}
}
$p=new Redfactory();
$p->createA()->show();//商品:RedA