zoukankan      html  css  js  c++  java
  • 访问者模式

    访问者模式构造了包含某个算法截然不同的对象, 访问者模式的一个主要优点是能够在不更改对象的情况下就向该对象添加新的功能。

    class Blog {
    	private $_user;
    	private $_date;
    	public function __construct($_user, $_date) {
    		$this->_user = $_user;
    		$this->_date = $_date;
    	}
    	public function __get($_key) {
    		return $this->$_key;
    	}
    	public function addBlog() {
    		return $this->_user.'于'.$this->_date.'发表了一篇博文!';
    	}
    	//创建一个新增功能的访问入口
    	public function visit(L $_l) {
    		return $_l->get($this);
    	}
    }

      

    abstract class L {
    	abstract public function get(Blog $_blog);
    }
    class Title extends L {
    	private $_title;
    	
    	public function __construct($_title) {
    		$this->_title = $_title;
    	}
    	
    	public function get(Blog $_blog) {
    		return $_blog->_user.'发表的的博文的标题是:'.$this->_title;
    	}
    }
    

      

    $_blog1 = new Blog('Lee', '2012年2月1日');
    echo $_blog1->addBlog();
    
    echo '<br />';
    
    echo $_blog1->visit(new Title('Javascript 与 php'));
    

      

    不需要对 Blog 进行修改,而只是增加一个访问者入口的方法, 然后通过一个单独的类来封装算法。 这样大大的提高了扩展性和维护性,从而不会对已存在的代码造成连锁反应。

  • 相关阅读:
    TCP/IP学习-链路层
    Linux下搭建Wordpress环境
    DiskMgr的限制项
    Win10系统Start Menu上的图标莫名消失
    powershell
    第一个页面的文本域中输入的值怎么在第二个页面中显示
    php 文本框里面显示数据库调出来的资料
    php代码
    php表单提交方法汇总
    php将SQL查询结果赋值给变量
  • 原文地址:https://www.cnblogs.com/jsmiao/p/4611685.html
Copyright © 2011-2022 走看看