策略者模式小示例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了策略者模式小示例相关的知识,希望对你有一定的参考价值。
// 策略者模式
/**
- 类名: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);
以上是关于策略者模式小示例的主要内容,如果未能解决你的问题,请参考以下文章
Java设计模式Builder建造者模式,Builder设计模式简单代码示例