门面模式以及DI注入、容器模式

7、门面模式

1、他对客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得使用起来更加方便

2、实现了子系统与客户之间的松耦合关系

3、如果应用需要,他并不限制他们使用子系统类,异常可以在系统易用性之间加以选择

适用场景

1、为一些负责的子系统提供一组接口

2、提高子系统的独立性

3、在层次化结构中,可以使用门面模式定义系统的每一层的接口

8、DI依赖注入 其实就是参数传递

减少类和类之间联系


门面模式:

<?php
//门面模式实例打开照相机为例
//两部打开闪光灯打开照相机,关闭闪光灯关闭照相机
class Light{
	function turnOn(){
		echo '打开闪光灯<br/>';
	}
	function turnOff(){
		echo '关闭闪光灯<br/>';
	}
}
class Camera{
	function active(){
		echo '打开照相机<br/>';
	}
	function deactive(){
		echo '关闭照相机';
	}
}
class Facade{
	protected $light;
	protected $camera;
	function __construct(){
		$this->light=new Light();
		$this->camera=new Camera();
	}
	function start(){
		$this->light->turnOn();
		$this->camera->active();
	}
	function stop(){
		$this->light->turnOff();
		$this->light->deactive();
	}
}
/*
$light=new Light();
$camera=new Camera();
$light->turnOn();
$camera->active();*/
$f=new Facade();
$f->start();
$f->stop();
?>
DI注入、容器

<?php
//轮胎类和汽车类
/*class LunTai{
	function roll(){
		echo '轮胎在滚动';
	}
}
class BMW{
	function run(){
		$luntai=new LunTai();
		$luntai->roll();
		echo '开着宝马<br/>';
	}
}
$bmw=new BMW();
$bmw->run();
class LunTai{
	function roll(){
		echo '轮胎在滚动';
	}
}
class BMW{
	protected $luntai;
	function __construct($luntai){
		$this->luntai=$luntai;
	}
	function run(){
		//$luntai=new LunTai();
		$this->luntai->roll();
		echo '开着宝马<br/>';
	}
}
$luntai=new LunTai();
$bmw=new BMW();
$bmw->run();*/
class LunTai{
	function roll(){
		echo '轮胎在滚动';
	}
}
class BMW{
	protected $luntai;
	function __construct($luntai){
		$this->luntai=$luntai;
	}
	function run(){
		//$luntai=new LunTai();
		$this->luntai->roll();
		echo '开着宝马<br/>';
	}
}
class Container{
	//存放绑定类s
	static $register=[];
	//绑定函数
	static function bind($name,Closure $col){
		self::$register[$name]=$col;//闭包
	}
	//创建函数创建对象
	static function make($name){
		$col=self::$register[$name];
		return $col();
	}
}
Container::bind('luntai',function(){
	return new LunTai();
});
Container::bind('bmw',function(){
	return new BMW(Container::make('luntai'));
});
$bmw=Container::make('bmw');
$bmw->run();
?>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值