观察者模式,适配器模式,策略模式
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();
?>
他是一种事件系统,意味着这一模式允许某个类观察另一个类的状态,当被观察者的类的状态发生改变的时候,观察类可以收到通知并且做出相应的动作,观察者模式提供了避免组件之间紧密耦合的另一种方法
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();
?>
相关文章推荐
- IOS设计模式之三(适配器模式,观察者模式)
- 设计模式之行为型模式(责任链、命令、解释器、迭代式、仲裁者、备忘录、观察者、状态、策略、模板方法、访问者)
- 详解Python设计模式编程中观察者模式与策略模式的运用
- 适配器模式和观察者模式
- php设计模式专题附源码(适配器模式、模板模式、命令模式、单例模式、观察者模式)
- NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
- 快速掌握23种设计模式(状态,策略,观察者)
- 详解Python设计模式编程中观察者模式与策略模式的运用
- iOS设计模式之三:适配器模式和观察者模式
- iOS设计模式之三(适配器模式,观察者模式)
- 设计模式---策略模式And 观察者模式
- 设计模式---复合模式(策略-适配器-装饰者-抽象工厂-组合-观察者)
- php设计模式专题附源码(适配器模式、模板模式、命令模式、单例模式、观察者模式)
- 《Head First 设计模式》学习笔记:策略模式与观察者模式
- 设计模式笔记(二)--策略模式、观察者模式
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- php设计模式--单例,工厂,观察者,策略模式
- 设计模式学习一 策略模式;观察者模式
- 常见的设计模式:单例模式、工厂模式、观察者模式、装饰模式与适配器模式
- 设计模式[策略模式和观察者模式]