整理一下自己的学习Aaron Saray 写的PHP设计模式
一些demo
和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打
/**
* Adapter 适配器模式
* -------------------------------------
* ** 来自说明 **
*
* 通过适配器模式能够使用新的代码和功能性来帮助更新原有的系统。
* 简单的说需要转化一个对象的接口用于另一个对象中时,
* 在不改变原对象的基础上可以采用适配器模式
*
* =====================================
* ** 应用场景 **
*
* 对于项目中比较旧的架构底层的基类做接口更改时使用
*
* -------------------------------------
*
* @version ${Id}$
* @author Shaowei Pu <542684913@QQ.cn>
*/
<?php
// 你现在是大巍施工队分配到伊朗的挖矿工头。
/**
* 大巍施工队总部
*/
class headquarters
{
protected $_worker;
public function __construct($worker){
$this->_worker = $worker;
}
public function getWorker(){
if( !empty($this->_worker) ){
return '力大无穷'.$this->_worker.'个挖矿师傅';
}
}
}
/**
* 分包出去干活的
*/
class assignWorker
{
protected $_workerObject;
public function __construct(headquarters $_workerObject ){
$this->_workerObject = $_workerObject;
}
public function assign(){
echo $this->_workerObject->getWorker(); // 将错误信息输出至控制台
}
}
/**
* 现在你要20个力大无穷的搬砖师傅,然后找下总部,总部就给你了
*/
$Iran = new assignWorker(new headquarters(20));
$Iran->assign();
echo "<hr/>";
// 日复一日,年复一年,你又被调到黎巴嫩挖矿,这边不同于你在伊朗的日子了,这里你要挖取钻石矿
// 但是这个钻石矿要几个砖家配合挖矿师傅才行,可是公司现在不能提供给你其他部门,因为咱们是百年大企业,主单位不能随便加部门进去
// 大巍国际的人才培养很利索,要什么有什么,这可难不倒你。所以你想了这样一个办法
//
/**
* 黎巴嫩专用适配器
*/
class Adapter extends headquarters
{
public function __construct($worker){
parent::__construct($worker);
$this->getallheaders();
}
public function getallheaders(){
$this->_worker ='勇敢过人的'.($this->_worker/2).'个砖家在加上'.$this->_worker;
}
}
// 这下你要的的人就出来了
$Lebanon = new assignWorker(new Adapter(20));
$Lebanon->assign();