设计模式学习抽象工厂模式

Posted 会学习的猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式学习抽象工厂模式相关的知识,希望对你有一定的参考价值。

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();

 

以上是关于设计模式学习抽象工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

工厂模式&抽象工厂——HeadFirst设计模式学习笔记

设计模式学习笔记--抽象工厂模式

(@WhiteTaken)设计模式学习——抽象工厂模式

设计模式之工厂方法和抽象工厂

设计模式:学习笔记——抽象工厂模式

设计模式学习笔记(十一:抽象工厂模式)