9、策略模式

原创 2016年06月01日 23:35:40
思考: 如果想增加取模运算又如何操作?

想一想简单工厂方法,是否有些相似? 又有哪些不同?

通过接口,隔离封装

通过继承,适应变化


工厂模式,我们着眼于得到对象,并操作对象,
策略模式,我们着重得到对象某方法的运行结果

<form method="post" action="">
	<input type="text" name="op1">
	<select name="op">
		<option value="Add">+</option>
		<option value="Sub">-</option>
		<option value="Mul">*</option>
		<option value="Div">/</option>
	</select>
	<input type="text" name="op2">
	<input type="submit" value="计算">
</form>
<?php

interface Math
{
	public function calc($op1, $op2);
}

class MathAdd implements Math
{
	public function calc($op1, $op2)
	{
		return $op1 + $op2;
	}
}

class MathSub implements Math
{
	public function calc($op1, $op2)
	{
		return $op1 - $op2;
	}
}

class MathMul implements Math
{
	public function calc($op1, $op2)
	{
		return $op1 * $op2;
	}
}

class MathDiv implements Math
{
	public function calc($op1, $op2)
	{
		return $op1 / $op2;
	}
}

//传来op,制造不同对象,并且调用

//封装一个虚拟计算器
class CMath
{
	protected $calc = null;

	public function __construct($type)
	{
		$calc = 'Math' . $type;
		$this->calc = new $calc();
	}

	public function calc($op1, $op2)
	{
		return $this->calc->calc($op1, $op2);
	}
}

$type = isset($_POST['op']) ? $_POST['op'] : '';
$op1 = isset($_POST['op1']) ? $_POST['op1'] : '';
$op2 = isset($_POST['op2']) ? $_POST['op2'] : '';
$cmath = new CMath($type);
echo $cmath->calc($op1, $op2);


版权声明:本文为博主原创文章,未经博主允许不得转载。

策略模式demo

  • 2017年11月24日 09:54
  • 7KB
  • 下载

delphi xe7 下实现的策略模式例子

  • 2017年06月26日 14:36
  • 3.01MB
  • 下载

算法的封装与切换——策略模式(四)

24.4 策略模式的两个典型应用       策略模式实用性强、扩展性好,在软件开发中得以广泛使用,是使用频率较高的设计模式之一。下面将介绍策略模式的两个典型应用实例,一个来源于Java SE,...
  • csdn_ds
  • csdn_ds
  • 2017年12月09日 13:27
  • 8

策略模式例子

  • 2015年03月24日 16:55
  • 8KB
  • 下载

策略模式Demo

  • 2017年01月08日 18:31
  • 6KB
  • 下载

策略模式(Strategy)

策略模式  (抄来的http://www.iteye.com/,但是挺经典的讲解:图文讲解看http://www.cnblogs.com/justinw/archive/2007/02/06/6414...

HeadFirst策略模式

  • 2015年09月02日 11:09
  • 1.69MB
  • 下载

软件测试之策略模式

  • 2013年06月18日 08:25
  • 14KB
  • 下载

“第一次亲密接触”——iOS中策略模式初运用

前段时间项目中涉及到输入验证比较多,有简单的是否为纯数字输入的验证,是否为纯字母输入的验证,也有复杂的正则检查验证。 偶尔翻阅去年买的一本设计模式的书,看到了一种设计模式:策略模式。 运用...
  • Binbby
  • Binbby
  • 2015年11月30日 22:58
  • 300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:9、策略模式
举报原因:
原因补充:

(最多只允许输入30个字)