抽象工厂模式
抽象工厂模式是一种更为高级的工厂模式,它可以创建多种不同类型的对象。抽象工厂模式通常由三个组件组成:抽象工厂,具体工厂和产品族。
抽象工厂
抽象工厂是一个接口或抽象类,它定义了创建产品族所需的方法。抽象工厂可以定义为接口或抽象类,具体取决于您的需求。下面是一个示例:
代码语言:javascript复制interface AbstractFactoryInterface {
public function createProductA();
public function createProductB();
}
在上面的代码中,我们定义了一个名为AbstractFactoryInterface的接口,它有两个方法:createProductA和createProductB。这些方法将用于创建产品族。
具体工厂
具体工厂是实现抽象工厂接口或继承抽象类的类。每个具体工厂都必须实现在抽象工厂中定义的所有方法。下面是一个示例:
代码语言:javascript复制class ConcreteFactory1 implements AbstractFactoryInterface {
public function createProductA() {
return new ProductA1();
}
public function createProductB() {
return new ProductB1();
}
}
class ConcreteFactory2 implements AbstractFactoryInterface {
public function createProductA() {
return new ProductA2();
}
public function createProductB() {
return new ProductB2();
}
}
在上面的代码中,我们定义了两个具体工厂:ConcreteFactory1和ConcreteFactory2。它们都实现了抽象工厂接口,并且实现了接口中定义的所有方法。ConcreteFactory1将创建ProductA1和ProductB1的实例,而ConcreteFactory2将创建ProductA2和ProductB2的实例。