PHP设计模式之-----观察者模式
来源:互联网 发布:淘宝福利图2000张密码 编辑:程序博客网 时间:2024/05/29 19:29
<?php/* * 观察者模式 * 其实观察者模式这是一种较为容易去理解的一种模式吧,它是一种事件系统,意味着这一模式允许某个类观察另一个类的状态,当被观察的类状态发生改变的时候,观察类可以收到通知并且做出相应的动作;观察者模式为您提供了避免组件之间紧密耦合的另一种方法 * */// 部队兵种的接口interface Arms{public function dispatched();}// 部队上的总指挥部的接口interface Subject{public function register( Arms $arms );public function notify();}/** * Class Action * * @describe 定义一个司令部类 如果收到了侦察兵的消息就歼灭敌军 * * @author nick * */class Action implements Subject{// 打这场战咱们有多少部队都告诉我 让我统计一下public $_observers = array(); // hi 哥们 你来统计一下兵种public function register( Arms $observer ){$this->_observers[] = $observer;}public function notify(){foreach ( $this->_observers as $observer ) {$observer->dispatched();}}}//核导弹部队class NuclearMissileForce implements Arms{public function dispatched(){echo '发射核导弹,正中目标!' . '<hr>';}}//战斗机部队class Jagdwaffe implements Arms{public function dispatched(){echo '空中轰炸机部队已经出动!' . '<hr>';}}//地面特种兵class GroundSpecialForces implements Arms{public function dispatched(){echo '地面特种部队正在歼灭敌军!' . '<hr>';}}/** * Class Sentry * * @describe 哨兵类 负责通知司令部 * * @author nick * */class Sentry{private $action;public function __construct(){$this->action = new Action();}// 统计部队上报司令部public function ReportToHeadquarters(){$this->action->register(new NuclearMissileForce());$this->action->register(new Jagdwaffe());$this->action->register(new GroundSpecialForces());}// 发现敌军 开始战斗public function notifyAction(){$this->ReportToHeadquarters();$this->action->notify();}}$obj = new Sentry();$obj->notifyAction();
阅读全文
0 0
- Php设计模式之观察者模式
- PHP 设计模式之观察者模式
- PHP 设计模式之观察者模式
- php设计模式之观察者模式
- php中的设计模式之--观察者模式
- PHP 设计模式之观察者模式
- php设计模式之观察者模式
- php设计模式之观察者模式
- PHP 设计模式之观察者模式
- PHP 设计模式之观察者模式
- php设计模式之观察者模式
- php设计模式之观察者模式
- PHP 设计模式之观察者模式
- PHP 设计模式之观察者模式
- php八大设计模式之观察者模式
- php 设计模式之观察者模式
- php设计模式之观察者模式
- PHP设计模式之观察者模式
- java_递归遍历文件目录结构,打印所有的目录名和文件名
- Redis 清缓存
- centos配置命令行或界面启动
- (1) 学习SpringBoot 之HelloWorld
- 深度学习各种优化方法比较
- PHP设计模式之-----观察者模式
- jquery中ajax传值
- springboot学习笔记1
- Linux(Red Hat6.5)下安装svn服务器,并通过http访问
- 图像处理的仿射变换和透视变换
- 第三章 创建Zookeeper会话【下】
- 3DES加密算法
- Artificial Neural Networks: Mathematics of Backpropagation (Part 4)
- bzoj2746 [HEOI2012]旅行问题 ( AC自动机 & fail树 +lca + hash )