php策略模式实现简单计算器
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>策略模式</title>
</head>
<body>
<form action='./demo03.php' method="post">
<input type="text" name="op1">
<select name="op">
<option value="Add">+</option>
<option value="Sub">-</option>
<option value="Multi">*</option>
<option value="div">/</option>
</select>
<input type="text" name="op2">
<p><input type="submit" name="" value="计算"></p>
</form>
</body>
</html>
PHP:
<?php
/**
* 策略模式
*
* 实现加减乘除
*/ interface MathOp
{
public function calculation(float $num1, float $num2);
} //策略一 加
class MathAdd implements MathOp
{
public function calculation(float $num1, float $num2)
{
// TODO: Implement calculation() method.
return $num1+$num2;
}
} //策略二 减
class MathSub implements MathOp
{
public function calculation(float $num1, float $num2)
{
// TODO: Implement calculation() method.
return $num1-$num2;
}
} //策略三 乘
class MathMulti implements MathOp
{
public function calculation(float $num1, float $num2)
{
// TODO: Implement calculation() method.
return $num1*$num2;
}
} class MathDiv implements MathOp
{
public function calculation(float $num1, float $num2)
{
// TODO: Implement calculation() method.
if( $num2 == 0) {
return "被除数不能为0";
}
return $num1/$num2;
}
} //环境角色 选择策略实现
class op
{
private $mathop; public function __construct(string $type)
{
$this->mathop = 'Math'.$type;
} public function calc (float $num1, float $num2)
{
$cls = new $this->mathop;
echo $cls->calculation($num1, $num2);
}
} $type = $_POST['op'];
$op1 = $_POST['op1'];
$op2 = $_POST['op2']; $obj = new op($type);
$obj->calc($op1, $op2);
php策略模式实现简单计算器的更多相关文章
- C++设计模式 ==> 策略模式与简单工厂模式结合
简介 策略模式相较之于简单工厂模式适用于生产方法经常变化且方法较为繁多的情况,因为生产方法时常变化就会需要频繁修改工厂类,违背了开闭原则,这时就可以用策略选择类由客户端根据需求动态切换策略.且策略模式 ...
- 设计模式之策略模式&简单工厂模式
学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解. ...
- Java实现策略模式的简单应用
在使用图像处理软件处理图片后,需要选择一种格式进行保存.然而各种格式在底层实现的算法并不相同,这刚好适合策略模式.编写程序,演示如何使用策略模式与简单工厂模式组合进行开发. 思路如下: 使用inter ...
- java笔记--策略模式和简单工厂模式
策略模式: --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3884781.html "谢谢-- 为什么使用:策略模式主要用于 ...
- ## springboot 下策略模式的简单使用
1.灵魂三问 接手前人(已跑路)项目快乐否? 前人项目不写注释懵逼否? 一个方法中一堆if/else,且业务判断条件用简单数字(或英文字母),不带注释,想打人否? 所以,对于上述三个问题,我写 ...
- 商场促销-策略模式(和简单工厂模式很像的哇) C#
还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 废话不多说,直接进入正题: 首先按照大话设计模式的解释,在这里也总结下策略模式 ...
- [Python设计模式] 第2章 商场收银软件——策略模式
github地址: https://github.com/cheesezh/python_design_patterns 题目 设计一个控制台程序, 模拟商场收银软件,根据客户购买商品的单价和数量,计 ...
- 大熊君说说JS与设计模式之------策略模式Strategy
一,总体概要 1,笔者浅谈 策略模式,又叫算法簇模式,就是定义了不同的算法,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 策略模式和工厂模式有一定的类似,策略模式相对简单容易理解,并 ...
- iOS设计模式之策略模式
策略模式(Strategy) 基本理解 面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类. 策略模式:它定义了算法家族,分别封装起来, ...
随机推荐
- BZOJ 5338: [TJOI2018]xor 可持久化trie+dfs序
强行把序列问题放树上,好无聊啊~ code: #include <bits/stdc++.h> #define N 200005 #define setIO(s) freopen(s&qu ...
- Win32下的中断和异常
本文是Matt Pietrek在1997年月10月的MSJ杂志Under The Hood专栏上发表的文章.中断和异常在DOS时代是整个系统的灵魂,但Windows已将其隐藏到了系统深处.Matt P ...
- WinDbg常用命令系列---源代码操作相关命令
lsf, lsf- (Load or Unload Source File) lsf和lsf-命令加载或卸载源文件. lsf Filename lsf- Filename 参数: Filename指定 ...
- cube.js 学习(十)cube 来自官方的学习网站
尽管cube.js 包含了一个doc 站点,但是资料不是很全,同时如果查看了cube github 代码中的一些demo的话,发现还是很不错的 但是一些实践没有在文档展现出来,还好我们可以从cube ...
- 转载:线性回归建模–变量选择和正则化(1):R包glmnet
2013-07-15 21:41:04 #本文的目的在于介绍回归建模时变量选择和正则化所用的R包,如glmnet,ridge,lars等.算法的细节尽量给文献,这个坑太大,hold不住啊. 1.变 ...
- 查看服务器内存、CPU、网络等占用情况的命令--汇总
搭建测试环境过程中,需要对正在使用的aws服务器(实际这是一台虚拟出来的服务器),查看它在运行脚本,启动脚本时的内存,CPU,网络等使用情况 1.查看服务器cpu内核个数: -cat 每个物理cpu中 ...
- rust猜数游戏代码
use std::io; use rand::Rng; use std::cmp::Ordering; fn main() { println!("Guess the number!&quo ...
- 刷题记录:[CISCN 2019 初赛]Love Math
目录 刷题记录:[CISCN 2019 初赛]Love Math 思路一 思路二 总结 刷题记录:[CISCN 2019 初赛]Love Math 题目复现链接:https://buuoj.cn/ch ...
- C盘不够用了
mklink /d C:\Users\zhangbaowei\.nuget\packages i:\link\.nuget\packages mklink /d C:\Users\zhangbaow ...
- Jmeter命令行运行配置环境变量
Jmeter命令行运行配置环境变量 在打开jmeter GUI界面时会弹出cmd命令窗口提示:压测时不要用GUI,要用命令行 在cmd命令行里面运行jmeter的话,需要配置jmeter环境变量,下面 ...