设计思想与模式之五观察者模式
Posted tonghun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计思想与模式之五观察者模式相关的知识,希望对你有一定的参考价值。
一 概述
1.什么是观察者模式?
将一个对象视作被观察者,当它发出某种行为或者发生某种变化时,通知所有依赖它的对象(观察者),这种设计模式叫做观察者设计模式。
2.观察者设计模式的用途
用于处理一对多的依赖关系,当一个对象的状态发生改变时,通知所有依赖于它的对象,这些对象收到通知以后采取相应的处理措施。
二 观察者模式构成
- 被观察者接口:包含添加观察者、删除观察者、通知观察者等操作。
- 被观察者:实现了被观察者接口,一个具体的被观察者。
- 观察者接口:处理被观察者的通知。
- 观察者:实现了观察者接口,一个具体的观察者。
三 实现Demo
1.被观察者接口
package com.designmode.observer.demo01; public interface IObserver { void handleNotify(String message); }
2.被观察者
package com.designmode.observer.demo01; import java.util.ArrayList; import java.util.List; public class Performer implements IObservable { private List<IObserver> observers; public Performer() { super(); observers = new ArrayList<IObserver>(); } @Override public void addObserver(IObserver observer) { // TODO Auto-generated method stub observers.add(observer); } @Override public void removeObserver(IObserver observer) { // TODO Auto-generated method stub observers.remove(observer); } @Override public void notifyObservers(String message) { // TODO Auto-generated method stub for (IObserver observer : observers) { observer.handleNotify(message); } } }
3.观察者接口
package com.designmode.observer.demo01; public interface IObservable { void addObserver(IObserver observer); void removeObserver(IObserver observer); void notifyObservers(String message); }
4.观察者一
package com.designmode.observer.demo01; public class FirstObserver implements IObserver { @Override public void handleNotify(String message) { // TODO Auto-generated method stub System.out.println("观察者FirstObserver接收到消息----[" + message + "]----正在处理"); } }
5.观察者二
package com.designmode.observer.demo01; public class SecondObserver implements IObserver { @Override public void handleNotify(String message) { // TODO Auto-generated method stub System.out.println("观察者SecondObserver接收到消息----[" + message + "]----正在处理"); } }
6.测试类
package com.designmode.observer.demo01; import org.junit.Test; public class ObserverTest { @Test public void test01() { /** * 创建观察者 */ IObserver firstObserver = new FirstObserver(); IObserver secondObserver = new SecondObserver(); IObservable performer = new Performer();// 创建被观察者 /** * 添加观察者 */ performer.addObserver(firstObserver); performer.addObserver(secondObserver); performer.notifyObservers("被观察者发生变化"); } }
以上是关于设计思想与模式之五观察者模式的主要内容,如果未能解决你的问题,请参考以下文章