• 策略模式:

策略模式设计帮助构建的对象不必自身包含逻辑,而是能够根据需要利用其他对象中的算法。

  • 使用场景:
    1. 例如有一个CD类,我们类存储了CD的信息。
    2. 原先的时候,我们在CD类中直接调用getCD方法给出XML的结果
    3. 随着业务扩展,需求方提出需要JSON数据格式输出
    4. 这个时候我们引进了策略模式,可以让使用方根据需求自由选择是输出XML还是JSON
  • 代码实例:

        <?php
    //策略模式
    //cd类
    class cd {
    protected $cdArr; public function __construct($title, $info) {
    $this->cdArr['title'] = $title;
    $this->cdArr['info'] = $info;
    } public function getCd($typeObj) {
    return $typeObj->get($this->cdArr);
    }
    } class json {
    public function get($return_data) {
    return json_encode($return_data);
    }
    } class xml {
    public function get($return_data) {
    $xml = '<?xml version="1.0" encoding="utf-8"?>';
    $xml .= '<return>';
    $xml .= '<data>' .serialize($return_data). '</data>';
    $xml .= '</return>';
    return $xml;
    }
    } $cd = new cd('cd_1', 'cd_1');
    echo $cd->getCd(new json);
    echo $cd->getCd(new xml);

最新文章

  1. 【转】查询oracle比较慢的session和sql
  2. Android通过名称找图片
  3. 【AngularJS学习笔记】00 序
  4. linux设备驱动归纳总结(四):1.进程管理的相关概念【转】
  5. intellij idea搭建ssh开发框架之绑定数据源
  6. POJ 1847 Tram (最短路)
  7. Android View的绘制机制流程深入详解(二)
  8. C# 日期转换函数
  9. uploadify上传图片(限制最多五张)
  10. 用APK Downloader直接从Google Play上下载apk
  11. Fliptile 翻格子游戏[Usaco2007 Open]
  12. 基于WebSocketSharp 的IM 简单实现
  13. vue-入门
  14. python入门(6)输入和输出
  15. 关于快速沃尔什变换(FWT)的一点学习和思考
  16. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)A Red Rover
  17. django之admin管理工具
  18. Using Java in Debian
  19. bayes公式 - 再从零开始理解
  20. juqery的一些简单用法

热门文章

  1. linux修改句柄数
  2. windows 2003添加删除windows组件中无iis应用程序服务器项的解决方法
  3. Fusioncharts图表组件API参考方法(Functions)汇总篇(续)
  4. jaxb异常 Class has two properties of the same name username
  5. Swift中异常处理(续集.正则)
  6. Mac系统下安装Tomcat,以及终端出现No such file or directory的错误提示解决方案
  7. Java枚举的3类语法
  8. extjs 框架模板
  9. js 选项卡
  10. C#代码发送邮件