观察者代码示例

来源:互联网 发布:solaris和centos 编辑:程序博客网 时间:2024/06/07 12:32
package com.example.guanchazhe;/** * 抽象的被观察者(主题角色) * @author Administrator * 添加方法 * 移除方法 * 通知方法 */public interface Watched{public void addWatcher(Watcher watcher );public void removeWatcher(Watcher watcher );public void notifyWatcher(String str );}


package com.example.guanchazhe;import java.util.ArrayList;import java.util.List;/** * 具体的主题角色 * @author Administrator * */public class ConcreteWatched implements Watched{//存放观察者private List<Watcher> list = new ArrayList<Watcher>();@Overridepublic void addWatcher(Watcher watcher ){// TODO Auto-generated method stublist.add( watcher );}@Overridepublic void removeWatcher(Watcher watcher ){// TODO Auto-generated method stublist.remove( watcher );}@Overridepublic void notifyWatcher(String str ){// TODO Auto-generated method stubfor( Watcher watcher : list ){watcher.update( str );}}}

package com.example.guanchazhe;/** * 抽象的观察者 * @author Administrator * */public interface Watcher{public void update(String str );}


package com.example.guanchazhe;/** * 定义具体的观察者 * @author Administrator * */public class ConcreteWatcher implements Watcher{@Overridepublic void update(String str ){System.out.println( str );}}


package com.example.guanchazhe;public class TestActivity{public static void main(String[] args ){Watched girl = new ConcreteWatched();Watcher watcher1 = new ConcreteWatcher();Watcher watcher2 = new ConcreteWatcher();Watcher watcher3 = new ConcreteWatcher();girl.addWatcher( watcher1 );girl.addWatcher( watcher2 );girl.addWatcher( watcher3 );girl.notifyWatcher( "这个属于观察者模式" );}}

输出结果是:

这个属于观察者模式
这个属于观察者模式
这个属于观察者模式

0 0
原创粉丝点击