Java学习笔记28 观察者模式(awt中…
来源:互联网 发布:php csdn博客 编辑:程序博客网 时间:2024/06/06 04:01
1.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当这个主题对象的状态发生变化时,会通知所有观察者对象,让他们能够自动更新自己 1)抽象主题角色:把所有观察者对象的引用集中在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口可以增加和删除观察者角色。一般用抽象类或接口来实现 2)抽象观察者角色:为所有具体的观察者定义一个接口,在得到主题的通知时更新自己 3)具体主题角色:在具体主题内部状态改变时给所有登记过的观察者发出通知。具体主题角色通常用一个子类实现 4)具体观察者角色:该角色实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调,如果需要,具体观察者角色可以保存一个指向具体主题角色的引用。通常用一个子类实现
2.观察者模式组成
观察者模式,理解Button的事件执行过程:
package com.observer;
import java.util.LinkedList;
import java.util.List;
public class Client
{
public static void main(String[] args)//我是主程序
{
ConcretWatcher con1 = new ConcretWatcher();
ConcretWatcher con2 = new ConcretWatcher();
ConcretButton button = new ConcretButton();//实例化一个按钮类
button.addActionListener(con1);//我注册一个事件监听器
button.addActionListener(con2);//我再注册一个事件监听器
button.notifyActionListener();//我相当于按钮被按下
System.out.println("*********");
button.removeActionListener(con1);//我删掉第一个事件监听器
button.notifyActionListener();//我相当于按钮被按下
}
}
interface Button1 //我是按钮接口,给实现我的按钮类提供了一定的规范
{
public void addActionListener(Watcher watcher);
public void removeActionListener(Watcher watcher);
public void notifyActionListener();
}
class ConcretButton implements Button1//我是按钮类,实现了按钮接口
{
List<Watcher> list = newLinkedList<Watcher>();
@Override
public void addActionListener(Watcherwatcher)
{
System.out.println("我要加一个监听器");
list.add(watcher);
}
@Override
public void removeActionListener(Watcher watcher)
{
System.out.println("我不要这个监听器了");
list.remove(watcher);
}@Override
public void notifyActionListener()
{
System.out.println("我有事件发生了,通知一下你们");
for(Watcher a : list)
{
System.out.println("通知了一次");
a.actionPerfomed();
}
}
}
interface Watcher//我是监听接口
{
public void actionPerfomed();
}
class ConcretWatcher implements Watcher//我是具体的监听类,实现了监听接口
{
@Override
public void actionPerfomed()
{
System.out.println("我是监听器中的事件处理器");
}
}
0 0
- Java学习笔记28 观察者模式(awt中…
- java设计模式,观察者模式与awt 和模拟awt
- java观察者模式学习笔记
- java设计模式学习笔记--观察者模式
- JAVA设计模式 - 观察者模式
- Java学习笔记之观察者模式
- 观察者模式学习笔记
- 观察者模式学习笔记
- Java观察者模式 java.util.Observa…
- java中观察者模式
- java 设计模式学习笔记(12) - 观察者模式
- 学习笔记-轻量级Java EE:模式--观察者模式
- java设计模式学习笔记6 观察者模式
- Java学习笔记(十)观察者模式及适配器模式
- Java设计模式【观察者模式】__学习笔记
- java/android 设计模式学习笔记(2)---观察者模式
- 学习笔记——JAVA设计模式<21>观察者模式
- Java学习笔记20 策略模式(Stratag…
- Java学习笔记24 静态代理模式和动…
- Java学习笔记25 java注解(annotat…
- Codeforces Round #411 (Div. 2)
- Java学习笔记26 异常Exception
- Java学习笔记27 将数字转换为中文…
- Java学习笔记28 观察者模式(awt中…
- Java学习笔记29 内部类(Inner Cla…
- 不要在外人面前揭孩子的“短”…
- 2-1体系结构技术发展
- android动画(三)属性动画
- 程序员要拥抱变化,聊聊Android即将支持的Java 8
- e-share
- 3-1 指令系统和基本流水线
- 4-1MIPS流水线和记分牌