PHP设计模式之抽象工厂模式实例分析
网络编程 2021-07-04 23:24www.168986.cn编程入门
这篇文章主要介绍了PHP设计模式之抽象工厂模式,结合实例形式分析了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程序设计有所帮助。
编程语言
- 机械手焊接机器人编程 机械手焊接设备编程
- vb数据库编程实例,vb做数据库
- tiobe世界编程语言排行榜,全球编程语言排行
- 成都java编程培训 成都it编程培训中心
- 编程基础培训,编程基础知识培训
- flash游戏编程基础教程,flash游戏开发教程
- 不会英语能学编程吗 不会英语可以学程序员吗
- 爱心代码编程C语言 爱心代码编程c语言公式
- c语言编程学习入门 c语言编程快速入门
- 西门子plc编程培训 西门子plc编程培训班
- 哪里可以学编程 台州哪里可以学编程
- 少儿编程哪个好 少儿编程哪个品牌好
- 编程是什么意思,图形编程是什么意思
- c语言编程软件下载,c语言编程软件在哪下载
- java编程软件下载,java编程下载手机版
- ug编程培训学校,ug编程培训教程