设计模式----------------观察者模式
来源:互联网 发布:java工作流引擎 编辑:程序博客网 时间:2024/05/19 22:24
转眼都要毕业了,拿出来的代码依旧不能看,我觉得我有必要学习一下大神给我推荐的编码界圣经《设计模式》,并在这里记录下我学习的一些心得,如发现有任何错误欢迎批评指出。
-------------一只瑟瑟发抖的准java程序员。
-------------------------------------------------------------------------------------------------手动分割-----------------------------------------------------------------------------------------------------------------------------
观察者模式
观察者模式用文字形容的话,就是对一个subject(被观察的主题对象),当其发生变化,或者说其中的某一个方法被调用时,将会通知注册为他的观察者observer的对象,
你观察的subject发生了变化。这里提醒一下,设计模式不是为了解决功能的实现问题,而是结构问题,每一个模式都是为了解决耦合问题,使程序更有弹性,更新扩展时不
对源代码进行修改。这里的观察者模式在这方面表现为,为同一个被观察者注册不同的观察者,并且这些观察者可以自由决定是否继续观察,做到了观察者的可变性。观察
者的重点不是如何实现观察,而是如何松耦合地实现观察,往后的设计模式都是如此。
下面用具体的java代码实现一下。
先从所需要的接口开始吧
SubjectInterface.java
//这是主题需要实现的接口,主要用于对观察者的注册以及删除通知等操作public interface SubjectInterface(){//注册观察者public void registerObserver(ObserverInterface ob);//删除观察者public void removeObserver(ObserverInterface ob);//通知观察者public void nodifyObserver();}
ObserverInterface.java
//这是观察者需要实现的接口,用于接受通知public interface ObserverInterface(){update();}下面是具体类的实现
Subject.java
//subject接口的实现类,持有Observer的接口实例public class Subject implement SubjectInterface{//用于存放观察者实例,注意类型为观察者的接口而不是实现类,利用java的多态使程序保持弹性,在构造器里初始化。private ArrayList<ObserverInterface> arrayList;public void doSomethingChange(){nodifyObserver();}public Subject(){arrayList = new ArrayList();}public void registerObserver(ObserverInterface ob){arrayList.add(ob);}public void removeObserver(ObserverInterface ob){Int i = arrayList.indexOf(ob);If ( i >=0 ) {arrayList.remove(i);}} public void nodifyObserver(){for (int i = 0 ; i < arrayList.size() ; i++){ObserverInterface observer = (ObserverInterface)arrayList.get(i);Observer.update();}}}Observer.java
public class Observer implement ObserverInterface{//接到通知时调用public void update(){doSomething();}public void doSomething(){//do something}}对于观察者和被观察者来说都有自己的接口,被观察者的实现类持有观察者接口,通过调用接口的方法,调用实现该接口的实例的具体方法。
- 模式设计:观察者模式
- 设计模式-----观察者模式
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式:观察者模式
- 设计模式-----观察者模式
- 设计模式:观察者模式
- 设计模式-观察者模式
- 设计模式 观察者模式
- 设计模式-观察者模式
- 设计模式-【观察者模式】
- 设计模式-观察者模式
- 设计模式 -- 观察者模式
- 设计模式-观察者模式
- 【设计模式】观察者模式
- 设计模式- 观察者模式
- 设计模式- 观察者模式
- 设计模式--观察者模式
- React Native之 Flux架构
- 斐波那契数列的实现
- 盒子模型
- weblogic部署应用程序,应用程序修改JSP页面浏览器刷新无效果解决办法
- sourceInsight4 破解笔记(完美破解)
- 设计模式----------------观察者模式
- Eclipse安装WindowBuilder并使用
- IOS UI框架对比
- 进程间通信--消息队列
- Curator操作zookeeper
- iNOC产品部-杨辉三角的变形(第二种方法也可以通过,测试数据太弱,n>10000就会爆的)
- 从源码解析,为何AppWidget不支持自定义View
- Java几个简单的面试题1
- List isEmpty()和size()==0 有什么区别