您的位置:首页 > 其它

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

2017-08-23 10:53 155 查看
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();
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐