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

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

 

转载于:https://www.cnblogs.com/huixuexidezhu/p/5972781.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值