<?php
/** PHP 策略模式
* 策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。
* 策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。
*
* 策略模式的三个角色:
* 1.抽象策略角色
* 2.具体策略角色
* 3.环境角色(对抽象策略角色的引用)
*
* 实现步骤:
* 1.定义抽象角色类(定义好各个实现的共同抽象方法)
* 2.定义具体策略类(具体实现父类的共同方法)
* 3.定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法)
*
* 就在编程领域之外,有许多例子是关于策略模式的。例如:
* 如果我需要在早晨从家里出发去上班,我可以有几个策略考虑:我可以乘坐地铁,乘坐公交车,走路或其它的途径。每个策略可以得到相同的结果,但是使用了不同的资源。
*/ //抽象策略类
abstract class baseAgent
{
abstract function PrintPage();
} //用于客户端是IE时调用的类(环境角色)
class ieAgent extends baseAgent
{
function PrintPage()
{
return 'IE';
}
} //用于客户端不是IE时调用的类(环境角色)
class otherAgent extends baseAgent
{
function PrintPage()
{
return 'not IE';
}
} //具体策略角色
class Browser
{
public function call($object)
{
return $object->PrintPage();
}
} $bro = new Browser();
echo $bro->call(new ieAgent()); //输出结果:IE
echo $bro->call(new otherAgent()); //输出结果:not IE

最新文章

  1. celery使用的一些小坑和技巧(非从无到有的过程)
  2. redis 安装
  3. MVC授权
  4. 快速记忆JavaScript中exec和match的使用
  5. 第一个ServiceStack程序
  6. Timus 1796. Amusement Park 聪明题
  7. win下 git gui 使用教程
  8. Python模块 - os , sys.shutil
  9. ansible+packer+terraform在aws上布署web服务器
  10. iOS开发 -------- Block技术中的weak - strong
  11. cp 命令有坑
  12. AngularJS参数绑定 --AngularJS
  13. python 生成器 迭代器
  14. php可选缓存APC
  15. linux 批量删除文件名中有换行符
  16. Vue学习笔记:methods、computed、watch的区别
  17. 【翻译自mos文章】在一次失败的 &amp;#39;Shutdown Immediate&amp;#39;之后,数据库job 不能执行。
  18. 【题解】POJ 3417 Network(倍增求LCA+DP+树上差分)
  19. CSS 笔记——背景布局
  20. zookeeper Java API 简单操作示例

热门文章

  1. 还不错的MUI技术文档
  2. day_5.12 py 老王开枪demo
  3. JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置
  4. 在windows下搭建vueJS开发环境
  5. elasticsearch与solr区别
  6. Javascript:一些基本语法
  7. Python:random模块
  8. 在SVNX中实现$Ids的自动替换
  9. js Dom对象的属性与方法
  10. [administrator][driver] driverctl 是如何在udev上层管理设备驱动的