用PHP代码实现简单的工厂模式,用PHP代码实现简单的工厂模式
PHP代码实现简单的工厂模式方法
1、定义抽象基类
//家禽类 abstract class Fowl { abstract public function eat();//吃方法 }
2、定义子类
//牛类 class Cattle extends Fowl { public function eat() { echo "我是牛,我吃草"; } } //鸭类 class Duck extends Fowl { public function eat() { echo "我是鸭,我吃鱼"; } } //羊类 class Sheep extends Fowl { public function eat() { echo "我是羊,我吃草"; } }
3、工厂类
//工厂类 class Factory { public static function create($fowlName) { switch ($fowlName) { case 'Cattle': return new Cattle(); break; case 'Duck': return new Duck(); break; case 'Sheep': return new Sheep(); break; } } }
4、客户端
$cattle = Factory::create('Cattle'); $cattle->eat();//我是牛,我吃草 $duck = Factory::create('Duck'); $duck->eat();//我是鸭,我吃鱼 $sheep = Factory::create('Sheep'); $sheep->eat();//我是羊,我吃草
用PHP代码实现简单的工厂模式,用PHP代码实现简单的工厂模式相关推荐
- 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细
1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...
- 伪代码的简单例子_使用策略+工厂模式彻底干掉代码中的if else!
对于业务开发来说,业务逻辑的复杂是必然的,随着业务发展,需求只会越来越复杂,为了考虑到各种各样的情况,代码中不可避免的会出现很多if-else. 一旦代码中if-else过多,就会大大的影响其可读性和 ...
- 设计模式:工厂方法模式(C++)【简单工厂进行升级】
工厂方法模式介绍 我们接上一集设计模式:简单工厂模式(C++),在简单工厂模式中,知道它的优点可以将我们从自己生产产品中解放出来,它的缺点: 1. 必须提供一个产品类型 给工厂 然后工厂给我们生产产品 ...
- 工厂方法模式的一种特例——简单工厂模式
工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步 ...
- 简单工厂模式(Java、Python)、工厂方法模式(Java、Python)
目录 一.试画出简单工厂模式的模式结构图,并对模式进行分析 1.1 简单工厂模式结构图: 1.2 简单工厂模式的实现(Java) 1.3 简单工厂模式的优缺点 1.4 简单工厂模式实现(Python) ...
- python的编程模式-实例讲解Python设计模式编程之工厂方法模式的使用
工厂方法模式是简单工厂模式的进一步抽象和推广,它不仅保持了简单工厂模式能够向客户隐藏类的实例化过程这一优点,而且还通过多态性克服了工厂类过于复杂且不易于扩展的缺点.在工厂方法模式中,处于核心地位的工厂 ...
- 设计模式:工厂方法模式(Factory Method)和抽象工厂模式(Abstact Factory)
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- RabbitMq的工作模式 介绍+测试代码,以及三种Exchange模式介绍.
RabbitMq的提供了六种模式分别是:简单模式,工作模式,发布\订阅模式,路由模式,通配符模式,RPC远程调用模式 下面将详细介绍常用的前五种模式,附上测试代码. 公共的代码---连接工具类: pu ...
- 抽象工厂模式java_Java描述设计模式(04):抽象工厂模式
一.抽象工厂模式 1.生活场景 汽车生产根据用户选择的汽车类型,指定不同的工厂进行生产,选择红旗轿车,就要使用中国工厂,选择奥迪轿车,就要使用德国工厂. 2.抽象工厂模式 1) 抽象工厂模式:定义了一 ...
- 设计模式之十一个行为型模式的相关知识,简单易懂。
一. 职责链模式-Chain of Responsibility Pattern 1) 请求的链式处理--职责链模式(一) "一对二","过",&quo ...
最新文章
- 自动驾驶寒冬与否,关键看“芯”
- python pdf-pythonPDF书籍十三本
- MacBook开机自动连接iPad好评
- 转python version 2.7 required,which was not found in the registry
- CDQ分治 Jam's problem again [HDU - 5618]
- C++ 11 深度学习(三)范围for、new内存动态分配、nullptr
- 复制GAC中的DLL
- ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例
- 【无人机】一文读懂无人机飞行原理
- 六:Python断言方法:assert
- 乱斗西游小白龙技能预设释放顺序
- MongoDB数据库重命名
- PHP实现sha-256哈希算法
- HTML——表单标签<form>与表单的实现
- UIWebView、UITextView 和UILable 设置行间距
- MSI微星主板MSI Dual CoreCenter监控软件 2.0.1.5
- 【微信聊天发的表情看不到,显示错误】
- 古文字识别助手与众包平台——项目博客二
- Network problems last Friday
- 超级账本-面向企业的分布式账本
热门文章
- 换了路由器电脑都连不上网了_路由器连不上网怎么办
- 皮一皮:确定不是某种特色酒店?
- Redis 是并发安全的吗?你确定?
- 再见了微服务!全面拥抱 DDD 思想真正的价值!
- 微信8.0之后,又悄悄上线新功能:别人“抢不到”的红包!赶紧看看灰度到你了没?...
- 重大BUG:你的淘宝双十一订单可能多付钱了!
- Windows 命令行终端 PowerShell 美化计划
- 微信悄然上线了十款新表情,你注意到了吗?
- 不敢相信?System.currentTimeMillis()存在性能问题
- Spring Boot/Cloud干货汇总(持续更新:20180226版)