码迷,mamicode.com
首页 > 其他好文 > 详细

策略者模式小示例

时间:2018-10-12 19:29:01      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:protected   data   实例   不同的   定义   enc   获取   数组   function   

// 策略者模式

/**

  • 类名:Tactics
  • 说明:策略者类,根据需要添加新的数据格式,只需要定义一个新的类名(比如HtmlData),方法名(getData)不变,将该方法的具体内容实现即可
    */
    class Tactics {
    // 示例数组
    protected $demoList;

    public function __construct() {

    }

    /*

    • 添加数据
      */
      public function addData($key,$value){
      $this->demoList[$key] = $value;
      }

    /*

    • 根据数据传递的数据格式对象,输出不同的数据格式
      */
      public function getTactics($obj) {
      return $obj->getData($this->demoList);
      }
      }

/**

  • 类名:JsonData
  • 说明:Json格式的数据
    */
    class JsonData {
    public function getData($data) {
    return json_encode($data);
    }
    }

/**

  • 类名:XmlData
  • 说明:xml格式的数据
    */
    class XmlData {
    public function getData($data) {
    $xml = ‘<?xml version="1.0" encoding="utf-8"?>‘;
    $xml .= ‘<data>‘;
    foreach ($data as $key => $value) {
    $xml .= ‘<group>‘;
    $xml .= ‘<key>‘.$key.‘</key>‘;
    $xml .= ‘<value>‘.$value.‘</value>‘;
    $xml .= ‘</group>‘;
    }
    $xml .= ‘</data>‘;
    return $xml;
    }
    }

// 实例化策略者类的对象
$tacticsObj = new Tactics();

// 给类中的属性赋值
$tacticsObj->addData(‘name‘,‘张三‘);
$tacticsObj->addData(‘age‘,‘18‘);

// 传递JsonData类型的对象,获取Json数据格式
echo $tacticsObj->getTactics(new JsonData);
// 传递XmlData类型的对象,获取xml数据格式
echo $tacticsObj->getTactics(new XmlData);

策略者模式小示例

标签:protected   data   实例   不同的   定义   enc   获取   数组   function   

原文地址:http://blog.51cto.com/suyanzhu/2299420

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!