通过简单工厂模式的开发,能够较大程度的降低代码间的耦合度,提高代码的可扩展性。下面是做了一个四则运算计算器的简单工厂模式。

先写一个工厂类,加、减、乘、除。。。。这些运算均可在工厂类里去生产。

<?phprequire './Calculate.class.php';class OperationFactory{public static function createOper(string $operation){$ope = null;switch($operation) {case '+':$ope = new Add();break;case '-':$ope = new Sub();break;   case '*':$ope = new Mul();break;case '/':$ope = new Div();break;      }return $ope;}}

正常每一个运算应该单独写一个类,在工厂类里相应的引入运算类文件,这里我做的比较简单,直接写了一个calculate类来放。

<?phprequire "./Operation.class.php";class Add extends Operation{public function getResult(){return $this->numA + $this->numB;}}class Sub extends Operation{public function getResult(){return $this->numA - $this->numB;}}class Mul extends Operation{public function getResult(){return $this->numA * $this->numB;}}class Div extends Operation{public function getResult(){return $this->numA / $this->numB;}}

在这里将运算类抽象成一个类。其他具体的运算类均去继承他。这样代码的封装性更好。

<?phpabstract class Operation{private $numA;private $numB;public function __set($property, $value){if (property_exists($this, $property)) {$this->$property = $value; }}public function __get($property){if (property_exists($this, $property)) {return $this->$property;} }abstract function getResult();}

最后我们在客户端调用就可以了

<?phprequire_once"./OperationFactory.class.php";$ope = OperationFactory::createOper("+");$ope->numA = 12;$ope->numB = 23;echo $ope->getResult();

这样就将客户端,工厂,运算类,运算符类的耦合度降低了很多,当需要增加其他运算的时候,只需要在工厂类里增加相应的生产线,然后去扩展一个运算,客户端直接调用就可以了。

php实现简单工厂模式相关推荐

  1. 设计模式之简单工厂模式

    一.概述 工厂模式具体包括了简单工厂.工厂方法.抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23中模式.   但是它是理解其它的工厂模式的一个很好 ...

  2. 设计模式 之美 -- 简单工厂模式

    文章目录 1. 解决问题 2. 应用场景 3. 实现 C++实现: C语言实现 4. 缺点 1. 解决问题 举例如下: 我们实现一个卖衣服的功能,衣服的种类有很多:帽子,裤子,T恤... 每卖一种衣服 ...

  3. 设计模式之简单工厂模式(Simply Factory)摘录

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

  4. Java中的简单工厂模式(转)

    Java中的简单工厂模式 举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 话说:"天地开辟,未有人民,女娲抟土为人."女娲需要用土造出一个个的人,但在女娲造出人之前, ...

  5. 《JAVA与模式》之简单工厂模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂 ...

  6. 简单工厂模式(StaticFactoryMethod)

    来华北电力大学数理系LSGO软件技术团队学习Coding,我通常第一个就讲"简单工厂模式",这一讲不仅仅是讲模式,更主要的是让大家体会什么是软件系统的"可复用" ...

  7. 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细

    1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...

  8. java工厂模式 uml_简单工厂模式的UML类图与源码实现(转) | 学步园

    简单工厂模式的UML图 源码:Operation类 Java代码 packageOperation; publicabstractclassOperation { doublenumberA=0; d ...

  9. 设计模式(0)简单工厂模式

    0 设计模式基础 0.0 设计模式的定义 先来看一下设计模式常见的书面定义: 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他 ...

  10. 大话设计模式之简单工厂模式

    一.简单工厂模式 1.起因 最近在看一本大话设计模式一书,感觉上面讲述的富有故事性,引导你一步一步的走进设计模式的世界.首先我先看到的是简单工厂模式,对此我想给自己做一个总结,给自己做一个提示. 2. ...

最新文章

  1. 剑指offer:不用加减乘除做加法
  2. 1万属性,100亿数据,每秒10万吞吐,架构如何设计?
  3. SSL延迟有多大 (Https)
  4. python中id函数的用法_用id函数做几个测试
  5. C++ | Qt 获取局域网中存在的主机(IP以及主机名)
  6. 嗨淘点赞运营版完整源码/刷单/手动派单版本
  7. jQuery框架学习第八天:ASP.NET jQuery实施方案
  8. 计算机科学竞赛加拿大,滑铁卢大学计算机科学与数学竞赛最新考试时间!
  9. oracle定时删库,随手胡乱写的批处理,实现Oracle每天定时备库,DMP文件保留3天,3天后删除,对应2000系统...
  10. python实现oss文件下载
  11. 交付管理——怎样构建项目团队
  12. buu-[WUSTCTF2020]level3
  13. PS 图像调整算法——饱和度调整
  14. Android 消息机制(Handler运行机制)
  15. surface pro java_平板界的楷模!Surface Pro 4简直无敌了
  16. 机器学习-周志华教授
  17. 路由器限速--提高你的网速
  18. 2015百度之星资格赛解题报告
  19. php用什么服务器系统时间格式,php中时间戳和日期格式的转换
  20. Temporal Segment Networks for Action Recognition in Videos 用于动作识别的时序分割网络

热门文章

  1. 2021-2027年中国手机面板视窗玻璃行业市场研究及前瞻分析报告
  2. Web APIs:移动端网页特效--移动端常用开发插件(fastclick,swiper及zy.media.js)
  3. js将指定的网页元素转换为图片
  4. PHPExcel----保存/导出excel文档数据【简单实用demo】
  5. Robots.txt - 禁止爬虫
  6. ptx760功能图解_求摩托罗拉PTX760对讲机使用说明书
  7. 第一章 动态网页基础
  8. 网站目录需要什么样的权限?IUSER_和NETWORK SERVICE权限如何设置
  9. 火影忍者.木叶---我的家
  10. 浅析 | 低代码在海岸TDM中的实际应用(平台后端架构)