知识大全 设计模式-快餐简解-观察者模式

Posted

篇首语:恢弘志士之气,不宜妄自菲薄。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 设计模式-快餐简解-观察者模式相关的知识,希望对你有一定的参考价值。

  【观察者模式应用场景举例

  比如在玩 极品飞车 这款游戏 每一个车手到达终点的时候 都会在其它车手的屏幕上显示 某某人以多少时间到达终点的提示 其实这就是一个典型的观察者模式的应用 观察者模式即是典型的双向一对多的应用场景下用一的一端来通知多的一端

  【观察者模式解释

  类型 行为模式

  定义了一种一对多的依赖关系 让多个观察者对象同时监听某一个主题对象 这个主题对象的状态发生改变时 会通知所有的观察者对象 使它们能够自己更新自己

  【观察者模式UML图

  

  【观察者模式 JAVA代码实现

  新建抽象发布通知父类

   package carer_subject;import java util ArrayList;import java util List;import carer_observer carer_observer;public interface carer_subject_parent     public void set_state(String state_string);    public String get_state();    public void add_observer(carer_observer carer_observer_ref);    public void sub_observer(carer_observer carer_observer_ref);    public void notityAllCarer();

  新建发布通知实现类

   package carer_subject;import java util ArrayList;import java util List;import carer_observer carer_observer;public class carer_subject_sub implements carer_subject_parent     List<carer_observer> list_observer = new ArrayList<carer_observer>();    private String state;    public void set_state(String state_string)         this state = state_string;        public String get_state()         return state;        public void add_observer(carer_observer carer_observer_ref)         list_observer add(carer_observer_ref);        public void sub_observer(carer_observer carer_observer_ref)         list_observer remove(carer_observer_ref);        public void notityAllCarer()         state =  到达终点 ;        for (int i =  ; i < list_observer size(); i++)             list_observer get(i) show_info();            

  新建观察者接口

   package carer_observer;import carer_subject carer_subject_parent;public interface carer_observer     public void show_info();

  新建观察者实现类

   package carer_observer;import carer_subject carer_subject_parent;public class carer_observer_imple implements carer_observer     private carer_subject_parent carer_subject_parent_ref;    public carer_subject_parent getCarer_subject_parent_ref()         return carer_subject_parent_ref;        public void setCarer_subject_parent_ref(            carer_subject_parent carer_subject_parent_ref)         this carer_subject_parent_ref = carer_subject_parent_ref;        public carer_observer_imple(carer_subject_parent carer_subject_parent_ref)         super();        this carer_subject_parent_ref = carer_subject_parent_ref;        public void show_info()         System out println(carer_subject_parent_ref get_state());    

  新建客户端运行类

   package run_main;import carer_observer carer_observer_imple;import carer_subject carer_subject_parent;import carer_subject carer_subject_sub;public class run_main     public static void main(String[] args)         carer_subject_parent carer_subject_parent_ref = new carer_subject_sub();        carer_observer_imple carer_observer_imple_ref  = new carer_observer_imple(                carer_subject_parent_ref);        carer_observer_imple carer_observer_imple_ref  = new carer_observer_imple(                carer_subject_parent_ref);        carer_observer_imple carer_observer_imple_ref  = new carer_observer_imple(                carer_subject_parent_ref);        carer_observer_imple carer_observer_imple_ref  = new carer_observer_imple(                carer_subject_parent_ref);        carer_subject_parent_ref add_observer(carer_observer_imple_ref );        carer_subject_parent_ref add_observer(carer_observer_imple_ref );        carer_subject_parent_ref add_observer(carer_observer_imple_ref );        carer_subject_parent_ref add_observer(carer_observer_imple_ref );        carer_subject_parent_ref sub_observer(carer_observer_imple_ref );        carer_subject_parent_ref set_state( 到达终点 );        carer_subject_parent_ref notityAllCarer();    

  程序运行结果如下

   到达终点到达终点到达终点

  以一对多的方式进行对一方状态的改变而去通知多方 观察者模式也叫发布/订阅模式 一方进行发布 而多方进行订阅 和生活中看报纸一样 你喜欢订城市晚报 就会发给你

  【观察者模式 MyEclipse 项目JAVA代码实现

cha138/Article/program/Java/gj/201311/27277

相关参考

知识大全 设计模式-快餐简解-建造者模式

  【建造者模式应用场景举例】  比如在玩极品飞车这款游戏那么每一关的地图会千变万化简单的来说地图会有晴天和阴天之分那么创建地图时就要根据晴天或者阴天来对地图上的场景比如天空树房子和路面进行渲染这个过

知识大全 设计模式-快餐简解-模板方法模式

  【模板方法模式应用场景举例】  比如在玩极品飞车这款游戏每辆车都有显示速度的仪表盘但有可能A车显示的是蓝色的仪表盘B车显示的是红色的仪表盘分析中可以发现他们都有车速度的值但显示的方式不太一样其实模

知识大全 观察者模式 - 设计模式

  观察者模式定义了一个一对多的对象关系一个主体对象对应多个观察者对象当主体对象发生改变时所有它对应的观察者对象都会自动得到通知并更新  本文将给出一个相应的事例具体说明观察者模式是如果工作的这个事例

知识大全 java 设计模式之 观察者模式(Observer)

java设计模式之观察者模式(Observer)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 开发设计模式——asp.net中实现观察者模式

   在中实现观察者模式?难道中的观察者模式有什么特别么?嗯基于Http协议的Application难免有些健忘我是这样实现的不知道有没有更好的办法?  先谈谈需求吧以免

知识大全 php设计模式之观察者模式的应用详解

 代码如下:<?php//抽象主题interfaceSubjectpublicfunctionattach($observer);publicfunctiondetach($obser

知识大全 .net设计模式之观察者模式

  故事    小雪是一个非常漂亮的女孩漂亮的女孩总是有很多的追求者而且追求者的队伍在不断的变动随时有人进入这个队伍也有人退出男孩们追求女孩时总是表现出%的关心当小雪私自游玩时总是不断收到追求者询问小

知识大全 圣斗士星矢的状态模式和观察者模式

  星矢动画片《圣斗士星矢》的男猪脚超级小强怎么打也打不死  雅典娜动画片《圣斗士星矢》的女猪脚自称女神手下有个男人为他卖命  状态模式为了方便的控制状态的变化避免一堆IF/ELSE以及状态规则改变的

知识大全 爪哇语言观察者模式介绍

  简单地说观察者模式定义了一个一对多的依赖关系让一个或多个观察者对象监察一个主题对象这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象使这些观察者对象能够自动更新  观察者模式

知识大全 Java程序性能优化-观察者模式(3)

Java程序性能优化-观察者模式(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!