您的位置:首页 > 其它

观察者模式示例

2016-11-10 17:16 183 查看
public class FirstTeam implements NotifyListener {

@Override
public void notifyTeam(String msg) {
System.out.println("第一组得到消息:" + msg);
System.out.println("第一组不打牌了,开始工作了!!!");
}
}

public class SecondTeam implements NotifyListener{

@Override
public void notifyTeam(String msg) {
System.out.println("第二组得到消息:"+msg);
System.out.println("第二组不看视频,开始工作了!!!");
}
}

public class ThirdTeam implements NotifyListener{

@Override
public void notifyTeam(String msg) {
System.out.println("第三组得到消息:"+msg);
System.out.println("第三组不嗑瓜子了,开始工作了!!!");
}
}

public interface NotifyListener {

void notifyTeam(String msg);
}

public class Manager {

//把要求去观察的对象存放到一个容器当中
List<NotifyListener>list = new ArrayList<>();
//保证观察者观察到的对象是统一
private static Manager manager = new Manager();

public static Manager getTeacher(){
return manager;
}

//获取观察者集合
public List<NotifyListener> getNotifys(){
return list;
}

//注册用户
public void registerUser(NotifyListener listener){
list.add(listener);
}

//移除用户
public void removeUser(NotifyListener listener){
list.remove(listener);
}

public void come(){
for (NotifyListener listener : list) {
listener.notifyTeam("主管气势汹汹的来了");
}
}

}

public class Test {

public static void main(String[] args) {

FirstTeam ft = new FirstTeam();
SecondTeam st = new SecondTeam();

//获取被观察者
Manager manager = Manager.getTeacher();
manager.registerUser(ft);
manager.registerUser(st);

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