加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

外观模式

发布时间:2020-12-14 04:46:35 所属栏目:百科 来源:网络整理
导读:原文链接:http://www.orlion.ga/744/ 解释: ????通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性。 ? 代码: /**?*?外观模式?*?*/?class?SwitchFacade{private?$_light?=?null;?//电灯private?$_ac?=?null;//空

原文链接:http://www.orlion.ga/744/

解释:

????通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性。

?

代码:

/**
?*?外观模式
?*
?*/
?class?SwitchFacade
{
	private?$_light?	=?null;	?	//电灯
	private?$_ac	?	=?null;		//空调
	private?$_fan	?	=?null;		//电扇
	private?$_tv	?	=?null;		//电视
	
	public?function?__construct()
	{
		$this->_light?=?new?Light();
		$this->_fan?=?new?Fan();
		$this->_ac?=?new?AirConditioner();
		$this->_tv?=?new?Television();
	}
	/**
	?*?晚上开电灯
	?*
	?*/
	public?function?method1($isOpen?=1)?{
		if?($isOpen?==?1)?{
			$this->_light->on();
			$this->_fan->on();
			$this->_ac->on();
			$this->_tv->on();
		}else{
			$this->_light->off();
			$this->_fan->off();
			$this->_ac->off();
			$this->_tv->off();
		}

	}
	/**
	?*?白天不需要电灯
	?*
	?*/
	public?function?method2()?{
		if?($isOpen?==?1)?{
			$this->_fan->on();
			$this->_ac->on();
			$this->_tv->on();
		}else{
			$this->_fan->off();
			$this->_ac->off();
			$this->_tv->off();
		}
	}
}

/******************************************子系统类?************/
/**
?*?
*/?
class?Light
{	
	private?$_isOpen?=?0;
	public?function?on()?{
		echo?'Light?is?open',?'<br/>';
		$this->_isOpen?=?1;?
	}
	public?function?off()?{
		echo?'Light?is?off',?'<br/>';
		$this->_isOpen?=?0;
	}
}

class?Fan
{
	private?$_isOpen?=?0;
	public?function?on()?{
		echo?'Fan?is?open',?'<br/>';
		$this->_isOpen?=?1;?
	}
	public?function?off()?{
		echo?'Fan?is?off',?'<br/>';
		$this->_isOpen?=?0;
	}
}

class?AirConditioner
{
	private?$_isOpen?=?0;
	public?function?on()?{
		echo?'AirConditioner?is?open',?'<br/>';
		$this->_isOpen?=?1;?
	}
	public?function?off()?{
		echo?'AirConditioner?is?off',?'<br/>';
		$this->_isOpen?=?0;
	}
}
class?Television
{
	private?$_isOpen?=?0;
	public?function?on()?{
		echo?'Television?is?open',?'<br/>';
		$this->_isOpen?=?1;?
	}
	public?function?off()?{
		echo?'Television?is?off',?'<br/>';
		$this->_isOpen?=?0;
	}
}
/**
?*?客户类
?*
?*/
class?client?{
	static?function?open()?{
		$f?=?new??SwitchFacade();
		$f->method1(1);
	}

	static?function?close()?{
		$f?=?new??SwitchFacade();
		$f->method1(0);
	}
}
client::open();

????代码来自:http://blog.csdn.net/hguisu/article/details/7533759,《PHP设计模式》这本书上给出的例子跟建造者模式太像了,而上边的例子很合适,而且原文讲的也很好。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读