您的位置:首页 > 编程语言 > Java开发

82——java监听者模式

2016-03-06 14:43 281 查看
1.代码结构如下图:



其中Watched.java是被监听者,也就是事件源的一个接口;Watcher.java是监听者的一个借口。 ConcreateWatched.java,是一个具体的被监听对象,ConcreateWatcher,是一个具体的监听者。Test.java是一个测试用例。

//Watched.java

package com.lafang.observer;

public interface Watched//被观察者
{
public void addWatcher (Watcher watcher);
public void removeWatcher (Watcher watcher);
public void notifyWatcher (String str);

}


//Watcher.java
package com.lafang.observer;

public interface Watcher
{
public void update(String str);
}


//ConcrateWatched.java
package com.lafang.observer;

import java.util.ArrayList;
import java.util.List;

public class ConcrateWatched implements Watched

{

private List<Watcher> list = new ArrayList<Watcher>();

@Override
public void addWatcher(Watcher watcher)
{
// TODO Auto-generated method stub
list.add(watcher);

}

@Override
public void removeWatcher(Watcher watcher)
{
// TODO Auto-generated method stub
list.remove(watcher);

}

@Override
public void notifyWatcher(String str)
{
// TODO Auto-generated method stub
for(Watcher watcher : list)
{
watcher.update(str);
}

}

}


//ConcrateWatcher.java
package com.lafang.observer;

public class ConcrateWatcher implements Watcher
{

@Override
public void update(String str)
{
// TODO Auto-generated method stub
System.out.println(str);

}

}


//Test.java
package com.lafang.observer;

public class Test
{
public static void main(String[] args)
{
Watched girl = new ConcrateWatched();//相当于按钮

Watcher watcher1 = new ConcrateWatcher();
Watcher watcher2 = new ConcrateWatcher();
Watcher watcher3 = new ConcrateWatcher();//相当于监听器

girl.addWatcher(watcher1);
girl.addWatcher(watcher2);
girl.addWatcher(watcher3);

girl.notifyWatcher("Happy");
girl.removeWatcher(watcher2);
girl.notifyWatcher("sad");

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: