装饰器模式
php设计模式之4-装饰器模式
适配器问题:对已有的对象内容或者功能进行改变,不需要修改原始结构.
解决方案:通过新设计外围的类或者方法,来修改已生成原类实例的属性或者补充方法,参数为原类的实例
实例举例:
<?php
class forasp_user(){
private $user_id;
private $user_name;
function __construct($user_id){
$this->user_id = $user_id;
}
function get_username(){
$this->user_name = username($this->user_id);//中间省略了数据库查询等
return $this->username;
}
}
//当通过user_id获取一个用户名的时候
$user = new forasp_user("1");
$user_name = $user->get_username();
///如果需求变化要求返回的用户名输出大写,小写全部转换为大写的话.
class user_name_toupper{
private $__obj;
function __construct($obj){
$this->__obj = $obj;
}
function set_upper(){
$this->__obj->username = strtoupper($this->__obj->username);
}
}
//那获取的时候改为
$user = new forasp_user("1");
$upperobj = new user_name_toupper($user);
$upperobj->set_upper();
$user_name = $user->get_username;
?>
总结:装饰器模式思想主要是不修改原类时,利用外界的类或者方法,来修改原类的实例的属性或者方法.
转www.载for网站制作学习asp必.cn究