网站制作学习网经验与学习→正文:装饰器模式
字体:

装饰器模式

经验与学习 2010/10/26 17:58:47  点击:不统计


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究

·上一篇:数据库访问对象模式 >>    ·下一篇:PHP startup: Unable to load dynamic library的错误 >>
推荐文章
最新文章