Heim  >  Artikel  >  Backend-Entwicklung  >  php中的设计模式之代理模式

php中的设计模式之代理模式

WBOY
WBOYOriginal
2016-06-23 13:40:34805Durchsuche

<?php /* 代理模式 代理模式是一种结构型模式,它可以为其他对象提供一种代理以控制对这个对象的访问。例如武则天提供一个代理 替李治管理国家(对象) // 角色?	抽象主题角色(Subject):它的作用是统一接口。此角色定义了真实主题角色和代理主题角色共用的接口,这样就可以在使用真实主题角色的地方使用代理主题角色。?	真实主题角色(RealSubject):隐藏在代理角色后面的真实对象。(李治)?	代理主题角色(ProxySubject):它的作用是代理真实主题,在其内部保留了对真实主题角色的引用。	它与真实主题角色都继承自抽象主题角色,保持接口的统一。它可以控制对真实主题的存取,并可能负责创建和删除真实对象。	代理角色并不是简单的转发,通常在将调用传递给真实对象之前或之后执行某些操作,当然你也可以只是简单的转发。	与适配器模式相比:适配器模式是为了改变对象的接口,而代理模式并不能改变所代理对象的接口。*//*抽象接口有一个最大的原因就是约束双方的行为!什么意思呢?  其实就是我逼迫Proxy必须实现某些方法,而这些方法恰恰是对外公开的主要业务方法   在本例中就是李治约束代理(武则天)只能杀人不能做其他的*/interface Subject{	public function killPeople();} // 李治class RealSubject implements Subject { // 真实主题角色    public function __construct() {}    public function killPeople() {		echo 'kill 长孙无忌';	}}// 代理模式不能改变真是角色的接口,只能用; class ProxySubject{	private $subject  = NULL ;	public function __construct(RealSubject $RealSubject){		$this->subject = $RealSubject ;	}	public function killPeople(){		if(is_null($this->subject)){			$this->subject = $RealSubject ;		}		$this->subject->killPeople();	}}// client  代理人武则天$wuzetian = new ProxySubject();$wuzetian->killPeople();

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn