首页 > 代码库 > 设计模式学习(五)、抽象工厂模式

设计模式学习(五)、抽象工厂模式

1.抽象工厂模式的概念:

提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

2.抽象工厂模式的结构图

技术分享

3.抽象工厂模式角色说明

抽象工厂(AbstractFactory)角色:所有的具体工厂都必须实现该接口,这个接口包含了一组方法来生产产品。
具体工厂(ConcreteFactory)角色:实现不同的产品家族。

4.抽象工厂模式的实现

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 16-10-18
 * Time: 下午12:32
 */
//抽象工厂类
abstract Class AbstractFactory
{
    public abstract function createProductA();
    public abstract function createProductB();
}
//具体工厂类
Class ConcreteFactory1  extends AbstractFactory
{
    public function createProductA(){
        return new ProductA1();
    }
    public function createProductB(){
        return new ProductB1();
    }
}

//具体工厂类
Class ConcreteFactory2  extends AbstractFactory
{
    public function createProductA(){
        return new ProductA2();
    }
    public function createProductB(){
        return new ProductB2();
    }
}
//抽象产品类
interface AbstractProductA
{
    public function description();
}
//具体产品类
Class ProductA1 implements  AbstractProductA
{
    public function description(){
        echo ‘this is ProductA1‘;
    }
}
//具体产品类
Class ProductA2 implements  AbstractProductA
{
    public function description(){
        echo ‘this is ProductA2‘;
    }
}
//抽象产品类
interface AbstractProductB
{
    public function description();
}
//具体产品类
Class ProductB1 implements  AbstractProductB
{
    public function description(){
        echo ‘this is ProductB1‘;
    }
}
//具体产品类
Class ProductB2 implements  AbstractProductB
{
    public function description(){
        echo ‘this is ProductB2‘;
    }
}
//客户端使用
$f1 =  new ConcreteFactory1();
$f1->createProductA();
$f1->createProductB();
$f2 = new ConcreteFactory2();
$f2->createProductA();
$f2->createProductB();

 

设计模式学习(五)、抽象工厂模式