适配器模式
http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E
php设计模式之1-适配器模式.
适配器问题:当一个类已经定义假设为a,需要有新的功能,但是新的功能需要有现有a的对象,或者添加了新行为等.
当遇到这种情况时候,则适用适配器.
解决方案:适配器采用新的类b,参数为a的实例,b可以添加新的功能,也可以通过a的实例来调用a的方法.
举例:
<?php
class forasp{
function writeurl(){
echo "http://www.forasp.cn/";
}
function getwebname(){
return "网站制作学习网!";
}
}
//输出:前面两个
$tobj = new forasp();
$tobj->writeurl();
echo $tobj->getwebname();
//采用适配器
class newforasp{
private $obj;
function __construct($obj){
$this->obj=$obj;
}
function write(){
$this->obj->writeurl();
echo $this->obj->getwebname();
}
function othermethod(){
echo "其他方法";
}
}
$tobj2 = new newforasp($tobj);
$tobj2->write();
$tobj2->othermethod();
?>
这样保留了原来的类,又可以通过新的名称调用原来的类,扩展了方法.
适配器的关键思路:保留原方法,原方法的实例作为新方法的参数,新类中可以有新方法.新类通过原方法的实例也实现了原方法的功能.