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>();
@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 );
}
}
}
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
{
@Override
public 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( "这个属于观察者模式" );
}
}
输出结果是:
这个属于观察者模式
这个属于观察者模式
这个属于观察者模式