观察者模式,适配器模式,策略模式

4、观察者

他是一种事件系统,意味着这一模式允许某个类观察另一个类的状态,当被观察者的类的状态发生改变的时候,观察类可以收到通知并且做出相应的动作,观察者模式提供了避免组件之间紧密耦合的另一种方法

5、适配器

生活中就有很多适配器,电源适配器,就是里面的变压器  220v

可将一个类的接口转换何曾客户希望的另外一个接口,使得原来不兼容的接口能够一起工作,通俗的理解就是将不同接口适配成统一的接口

6、策略模式

1、多个类之区别在表现行为不同,可以使用strategy模式,在运行时动态选择要执行的行为

2、需要在不同情况下使用不同的策略,或者策略还可能在未来用其他方式来实现

3、对客户隐藏具体策略的实现细节,彼此完全独立


观察者模式:

<?php
//观察者模式涉及到两个类,男人类和女朋友类
//男人类对象小明,女朋友小花和小丽
class Man{
	protected $observers=[];//用来存放观察者
	function addObserver($observer){
		//添加观察者方法
		$this->observers[]=$observer;
	}
	function buy(){
		foreach($this->observers as $girl){
			$girl->dongjie();//当被观察者做出这个行为的时候,观察者得到通知并且做出一定的反应
		}
	}
	function delObserver($observer){
		//删除观察在方法
		$key=array_search($observer,$this->observers);//查找对应值在数组中的键
		array_splice($this->observers,$key,1);//根据键删除值
	}
}
class GirlFriend{
	function dongjie(){
		echo '你的男朋友正在花钱,冻结他的银行卡<br/>';
	}
}
$xiaoming=new Man();
$xiaohua=new GirlFriend();
$xiaoli=new GirlFriend();
//添加观察者
$xiaoming->addObserver($xiaohua);
$xiaoming->addObserver($xiaoli);
$xiaoming->delObserver($xiaohua);
$xiaoming->buy();
?>
适配器模式:

<?php
interface PerfectMan{
	function cook();
	function writePhp();
}
class Wife{
	function cook(){
		echo '我会做饭<br/>';
	}
}
class Man implements PerfectMan{
	protected $wife;
	function __construct($wife){
		//在创建对象的时候保存传递进来的对象
		$this->wife=$wife;
	}
	function cook(){
		$this->wife->cook();
	}
	function writePhp(){
		echo '我会写平php代码<br/>';
	}
}
$li=new Wife();
$ming=new Man($li);
$ming->writePhp();
$ming->cook();
?>
策略模式:

<?php
interface Love{
	function sajiao();
}
class KeAi implements Love{
	function sajiao(){
		echo '讨厌<br/>';
	}
}
class Tiger implements Love{
	function sajiao(){
		echo '给老娘过来<br/>';
	}
}
class GirlFriend{
	protected $xingge;
	function __construct($xingge){
		$this->xingge=$xingge;
	}
	function sajiao(){
		$this->xingge->sajiao();
	}
}
$li=new GirlFriend($keai);
$keai=new KeAi();
$li->sajiao();
?>




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值