观察这模式的学习

设计模式:观察者模式
什么是观察者模式:
定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于
它的对象都得到通知自动更新。 
示例:
GUI编程中的addXxxxListener都是观察者模式。

观察者模式的三个重要类:
注册一个监听器 Listener
事件对像

Event测试类---初始化事件源  注册监听器  使用事件对像


开发步骤:
* 第一步:实现一个需要被监听的类Person.(被监听者)
* 第二步:实现一个监听接口PersonListener(注册一个监听器Listener)

* 第三步:在Person类中,提供一个方法用于注册PersonListener类,即registerListener

* 第四步:必须要在Person类中维护PersonListener类的实例。
* 第五步:在调用person中的方法时,判断PersonListener是否为null,如果不为null则调用它
对应的方法。
* 第六步:在测试中,实例化Person,并注册一个监听。


代码演示
public class Person {
private PersonListener listener=null;
public void run(){
int a=10;
for(int i=0;i<20;i++){
a=a+i;
}
if(listener!=null){//添加了监听才执行这段函数
PersonEvent e=new PersonEvent(this);
listener.running(a,e);
}
}
public void addPersonListener(PersonListener l){
this.listener=l;
}
}
interface PersonListener{
public void running(int n,PersonEvent e);
}
class PersonEvent{//监听事件
private Person person;
public PersonEvent(Person person){
this.person=person;
}
public Person getSource(){
return person;
}   }
测试类
public class Client {
private Person p=null;
public Client() {
p=new Person();
MyClass myclass=new MyClass();
p.addPersonListener( myclass);//注册监听
//通过注册监听;观察person的动作;也可以为其做功能
p.run();//触发监听
}
public static void main(String[] args) {
new Client();
}

class MyClass implements PersonListener{
@Override
public void running(int n,PersonEvent e) {
if(e.getSource()==p){
n=n*10000;
System.out.println(n);
}   }    }   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值