• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP设计模式之抽象工厂模式实例分析

    本文实例讲述了PHP设计模式之抽象工厂模式。分享给大家供大家参考,具体如下:

    前面的文章说了PHP下的简单工厂(静态工厂) 和工厂模式,现在说一下抽象工厂模式

    工厂模式我们已经说过,增加一个产品很简单,增加对应的产品类和工厂类,不需要对原有代码进行改动,符合开闭原则

    现在接着上篇文章,我们又有了新的需求,我们要求苹果味饮料和香蕉味饮料,有百事和可口可乐两个品牌,用工厂模式,就实现不了了,我只能增加单一的产品,但是增加品牌我实现不了,引申而出抽象工厂模式,代码如下

    ?php
    /**
     * Created by PhpStorm.
     * User: tiansi
     * Date: 18/1/23
     * Time: 下午5:10
     */
    //工厂接口
    interface FruitFactory{
      //生产饮料方法
      function makeAppleFruit();
      function makeBananaFruit();
    }
    //饮料接口
    interface Fruit{
      function getFruitName();
    }
    class BaishiAppleFruit implements Fruit{
      function getFruitName()
      {
        echo '百事苹果味饮料';
      }
    }
    class BaishiBananaFruit implements Fruit{
      function getFruitName()
      {
        echo '百事香蕉味饮料';
      }
    }
    class ColeiAppleFruit implements Fruit{
      function getFruitName()
      {
        echo '可口可乐苹果味饮料';
      }
    }
    class ColeBananaFruit implements Fruit{
      function getFruitName()
      {
        echo '可口可乐香蕉味饮料';
      }
    }
    //百事饮料工厂
    class BaishiFruitFactory implements FruitFactory{
      function makeAppleFruit()
      {
        //生产百事苹果饮料
        return new BaishiAppleFruit();
      }
      function makeBananaFruit()
      {
        //生产百事香蕉饮料
        return new BaishiBananaFruit();
      }
    }
    //可口可乐饮料工厂
    class ColeFruitFactory implements FruitFactory{
      function makeAppleFruit()
      {
        //生产可口可乐苹果饮料
        return new ColeiAppleFruit();
      }
      function makeBananaFruit()
      {
        //生产可口可乐香蕉味饮料
        return new ColeBananaFruit();
      }
    }
    $baishi_factory = new BaishiFruitFactory();
    $baishi_factory->makeAppleFruit()->getFruitName();
    echo "br/>";
    $baishi_factory->makeBananaFruit()->getFruitName();
    echo "br/>";
    $cole_factory = new ColeFruitFactory();
    $cole_factory->makeAppleFruit()->getFruitName();
    echo "br/>";
    $cole_factory->makeBananaFruit()->getFruitName();
    
    

    运行结果:

    百事苹果味饮料
    百事香蕉味饮料
    可口可乐苹果味饮料
    可口可乐香蕉味饮料

    现在我们可以看到 如果想要再增加一个品牌的话 只需要再写一个工厂类 并写上对应的产品类 就可以在不改动原有代码的前提下 成功增加品牌

    但是这会儿想要再增加一个单一产品,就很麻烦了,需要更改工厂类,这就是工厂和抽象工厂的区别

    工厂模式针对于单一产品,一个产品抽象类,每个工厂只能创建一个产品,支持扩展单个产品,不支持扩展产品族,针对一个产品等级结构

    抽象工厂针对于产品族,多个产品抽象类,每个工厂能创建多个产品,支持扩展产品族,不支持扩展单个产品,针对多个产品等级结构

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP实现设计模式中的抽象工厂模式详解
    • 学习php设计模式 php实现抽象工厂模式
    • 初次接触php抽象工厂模式(Elgg)
    • php设计模式之工厂方法模式分析【星际争霸游戏案例】
    • php面向对象基础详解【星际争霸游戏案例】
    • PHP设计模式之观察者模式(Observer)详细介绍和代码实例
    • php设计模式 Template (模板模式)
    • php设计模式 DAO(数据访问对象模式)
    • php设计模式 Proxy (代理模式)
    • php设计模式之抽象工厂模式分析【星际争霸游戏案例】
    上一篇:PHP设计模式之简单工厂和工厂模式实例分析
    下一篇:php+mysql开发中的经验与常识小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP设计模式之抽象工厂模式实例分析 PHP,设计模式,之,抽象,工厂,