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);


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

Android 中的那些策略模式

上篇文章 策略模式:网络小说的固定套路 介绍了策略模式 的基本概念,这篇文章我们来通过 Android 中的一些例子来加深对策略模式的理解。 首先祭上经典的策略模式 UML 图可以看到,策略模式中主要...
  • u011240877
  • u011240877
  • 2016年09月10日 10:56
  • 4502

设计模式实战应用之一:策略模式

策略模式的定义         策略模式是应用最普遍的设计模式之一。Gof 把策略模式归类到对象行为型模式,《设计模式:可复用面向对象软件的基础》对策略模式做出了明确的定义:“Define a fam...
  • defonds
  • defonds
  • 2013年11月19日 22:05
  • 6866

代理模式与策略模式的区别!

代理模式与策略模式有一些类似的地方,比如: 策略者可以根据策略不同,执行不同的策略方法; 代理人可以被代理对象的不同,执行不同的被代理人的方法; 似乎用代码很难表达清楚二者有什么区别,那就用一种场...
  • rubbishcan
  • rubbishcan
  • 2013年12月20日 15:02
  • 2266

策略模式的java实现例子

1、策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 2、策略模式由三种角色组成: (1)抽象策略角色: 策略类,通常由一个...
  • pnjlc
  • pnjlc
  • 2016年09月27日 11:40
  • 1467

大话设计模式—策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。大话设计模式中程杰老师给出的定义是这样的:策略模式(Strategy),定义了...
  • lmb55
  • lmb55
  • 2016年03月23日 23:59
  • 1583

Java设计模式——策略模式实现及原理

简介 定义 策略模式:将可变的部分从程序中抽象分离成算法接口,在该接口下分别封装一系列算法实现。并使他们可以相互替换,从而导致客户端程序独立于算法的改变。 策略模式中的设计原则:变化的抽象成接口;面向...
  • Goskalrie
  • Goskalrie
  • 2016年09月08日 16:22
  • 2611

策略模式总结

策略模式的核心思想:分离
  • sunshoupo211
  • sunshoupo211
  • 2014年10月29日 14:22
  • 977

策略模式原理及例子代码

策略模式将行为和环境隔离开来,环境角色类负责维持和查询行为的类,各种类似的逻辑算法都在各个具体的策略类中进行实现,由于环境和行为隔离开来,所以行为的逻辑变更不会影响到环境和客户端。 如果要使用策略类...
  • eddle
  • eddle
  • 2011年11月03日 21:04
  • 5520

三分钟理解“策略模式”——设计模式轻松掌握

策略模式的作用: 1.使用了策略模式后,如果需要增加一种策略,那么只需要创建一个实现了Strategy接口的子类,并重写其中的函数,然后在Context的构造函数中增加这种子类的判断。客户端的代码、C...
  • u010425776
  • u010425776
  • 2015年08月31日 11:14
  • 1313

【设计模式】策略模式详解

学习设计模式已经有一段时间了,前段时间一直在忙一个安卓的app,没时间更新。今天有点空,本着开源的精神,把策略模式的一些东西分享一下。...
  • H28496
  • H28496
  • 2015年06月07日 20:46
  • 1277
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:9、策略模式
举报原因:
原因补充:

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