<?php
/*** 【策略模式】----和“简单工厂”模式很相似* 根据不同运算符计算两个数的运算结果* 常规方式就是判断运算符然后进行if...else的操作* 现在使用“策略模式”*/header("Content-type: text/html; charset=utf-8");if(isset($_POST['js']) && !empty($_POST['js'])){/*接口,和四个真实计算器*/interface Math{public function calc($op1,$op2);}class Jia implements Math{public function calc($op1, $op2){return $op1+$op2;}}class Jian implements Math{public function calc($op1, $op2){return $op1-$op2;}}class Cheng implements Math{public function calc($op1, $op2){return $op1*$op2;}}class Chu implements Math{public function calc($op1, $op2){return $op1/$op2;}}/*封装一个虚拟计算器*/class CMath{protected $jisuan = null;//$objType 对应的真实计算器的 Jia/Jian/Cheng/Chupublic function __construct($type){if($type==1){$objType = 'Jia';}elseif($type==2){$objType = 'Jian';}elseif($type==3){$objType = 'Cheng';}elseif($type==4){$objType = 'Chu';}else{exit('Error...');}$this->jisuan = new $objType();}public function jsq($num1,$num2){return $this->jisuan->calc($num1,$num2); }}/*开始调用*/$js = $_POST['js'];$cmath = new CMath($js);$res = $cmath->jsq($_POST['num1'], $_POST['num2']);echo $res;}?><form action="?" method="post">
<input type="text" name="num1">
<select name="js"><option value="1">+</option><option value="2">-</option><option value="3">*</option><option value="4">/</option>
</select>
<input type="text" name="num2">
<button type="submit">提交</button>
</form>

转载于:https://www.cnblogs.com/rxbook/p/6002992.html

【PHP设计模式 08_CeLue.php】策略模式相关推荐

  1. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...

  2. 设计模式入门(策略模式)

    [0]README 0.1)本文部分文字描述转自 "head first 设计模式",旨在学习 设计模式入门(策略模式) 的基础知识: 0.2)本文章节4和5的source cod ...

  3. 设计模式 之美 -- 策略模式

    策略模式作为行为型设计模式中的一种,主要封装相同功能的不同实现算法,用于在用户程序内部灵活切换.对用户来说能够快速替换对应的算法,能够让算法的实现独立于使用的用户. 基本的UML类图如下: 用户使用S ...

  4. Java设计模式之十一 ---- 策略模式和模板方法模式

    前言 在上一篇中我们学习了行为型模式的访问者模式(Visitor Pattern)和中介者模式(Mediator Pattern).本篇则来学习下行为型模式的两个模式,策略模式(Strategy Pa ...

  5. 《研磨设计模式》chap17 策略模式(2) 总结

    1. 新增加context 上下文类 eg. 发工资:发人民币和发美元 public interface PaymentStrategy {//公司给某人真正支付工资 public void pay( ...

  6. 设计模式のStrategyPattern(策略模式)----行为模式

    一.问题产生背景 当我们进行一系列处理时(员工工资核算,会员管理,计算器,优惠活动),会有很多相似的算法和处理过程,只是由于具体的算法的差异,导致必须不同处理.这些处理和客户端无关,我们可以把这些算法 ...

  7. [设计模式] javascript 之 策略模式

    策略模式说明 定义: 封装一系列的算法,使得他们之间可以相互替换,本模式使用算法独立于使用它的客户的变化. 说明:策略模式,是一种组织算法的模式,核心不在于算法,而在于组织一系列的算法,并且如何去使用 ...

  8. LOL设计模式之「策略模式」

    之前写过一篇什么是「设计模式」?,没有类图,没有代码,有些同学说看不太懂,今天给大家带来策略模式(有图,有码,有真相!). 英雄联盟(LOL) 玩过LOL的同学都知道,LOL有上百个英雄,如果用OO技 ...

  9. 从王者荣耀看设计模式(一.策略模式)

    从王者荣耀看设计模式(策略模式) 一:简介 游戏开始前,玩家需要选择英雄,再根据所选择的阵容自由选择召唤师技能,游戏开始,玩家可以控制英雄进行普通攻击和使用召唤师技能攻击 二:策略模式 策略模式将可变 ...

  10. 《设计模式》之策略模式

    一.什么是策略模式? 比如对象的某个行为,在不同场景有不同实现方式,可以将这些行为的具体实现定义为一组策略,每个实现类实现种策略,在不同场景使用不同的实现,并且可以自由切换策略. 1.1.策略模式结构 ...

最新文章

  1. 被强制007加班!他愤而把加班证据发给国外供应商和大客户!客户纷纷取消订单!他去度假,老板气疯!...
  2. 自动驾驶中基于车道线的高清制图方法回顾
  3. vivado----fpga硬件调试 (五) ----找不到ila核问题及解决
  4. bzoj2720 [Violet 5]列队春游
  5. Pixhawk代码分析-姿态解算篇D
  6. 【C++11新特性】 - 空间配置allocator类
  7. LeetCode——动态规划:斐波那契数列
  8. 69. Sqrt(x)010(二分法求解+详解注释)
  9. Vue笔记-Ant Design Vue的使用(Vue3)
  10. 基于SSH框架社区智能化管理系统答辩PPT模板
  11. tp5自定义一个函数php,tp5 如何模块自定义函数!
  12. java 输入输出 函数对象构造
  13. Android开发项目计划书
  14. 什么是人工智能?(科普)
  15. 总结一下强大的ES6符号
  16. java for循环迭代_Java for循环棘手迭代
  17. 用python画皮卡丘的代码-用python画一只可爱的皮卡丘
  18. 如何写一份让 HR 眼前一亮的简历(附模板)
  19. gps有几个轨道面_GPS(全球定位系统)的 24 颗卫星的轨道是如何设计的?
  20. Vrep/CoppeliaSim:安装及相关资料

热门文章

  1. python过拟合_梯度下降、过拟合和归一化
  2. 四川大学锦城学院计算机考试题,四川大学锦城学院期考试试题(B卷)_15889.doc
  3. oracle undo seg,正确切换undo
  4. 卷积滤波 英文_图像处理必备英文词汇
  5. PL/SQL Developer 12.0下载及汉化
  6. orcale建表,创建字段id使其自增
  7. 遇劣势变蠢、发语音嘲讽人类……OpenAI这些奇葩DOTA操作跟谁学的?
  8. 如今,进北大要看脸了
  9. 腾讯超级大脑发布!马化腾要用三张智能网络,打造AI in All通用操作系统
  10. 理解 Redux 的最好方式,是自己写一个