观察者设计模式
来源:互联网 发布:白熊事务所装软件 编辑:程序博客网 时间:2024/06/16 08:23
观察者设计模式是通知一组对象自己的变化,而这一组对象又是变化的。如在学校外有很多叫外卖的,外卖的菜谱是变化的,学生订餐是变化的,如果菜谱变化了,就通知点餐的学生。
看下面的例子,你就会明白:
public interface IFood {
void adduser(IObserver user);
void removeuser(IObserver user);
void tel();
}
public class GuangdongFoodImp implements IFood{
private List<IObserver> list=null;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public GuangdongFoodImp(){
if(list==null){
list=new ArrayList<IObserver>();
}
}
@Override
public void adduser(IObserver user) {
list.add(user);
}
@Override
public void removeuser(IObserver user) {
list.remove(user);
}
@Override
public void tel() {
for(int i=0;i<list.size();i++){
list.get(i).update();
}
}
}
public interface IObserver {
void update();
}
public class StudentImp implements IObserver{
private String name;
private GuangdongFoodImp food;
public StudentImp(GuangdongFoodImp food){
this.food=food;
}
public GuangdongFoodImp getFood() {
return food;
}
public void setFood(GuangdongFoodImp food) {
this.food = food;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void update() {
name=food.getName();
System.out.println("我收到:"+name);
}
}
public class Client {
public static void main(String args[]){
GuangdongFoodImp food=new GuangdongFoodImp();
StudentImp stus1=new StudentImp(food);
StudentImp stus2=new StudentImp(food);
StudentImp stus3=new StudentImp(food);
food.adduser(stus1);
food.adduser(stus2);
food.adduser(stus3);
food.setName("小炸肉");
food.tel();
food.setName("水煮鱼");
food.tel();
}
}
- 模式设计:观察者模式
- 设计模式-----观察者模式
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式:观察者模式
- 设计模式-----观察者模式
- 设计模式:观察者模式
- 设计模式-观察者模式
- 设计模式 观察者模式
- 设计模式-观察者模式
- 设计模式-【观察者模式】
- 设计模式-观察者模式
- 设计模式 -- 观察者模式
- 设计模式-观察者模式
- 【设计模式】观察者模式
- 设计模式- 观察者模式
- 设计模式- 观察者模式
- 设计模式--观察者模式
- linux out of memory
- 1027. Colors in Mars (20)-PAT
- 52控制mc35i
- Struts2 中#、@、%和$符号的用途
- DBus初识
- 观察者设计模式
- Java 读写锁的应用 自定义的缓存系统
- Struts2标签 %{ } %{# }
- 【索引】AOAPC I: Beginning Algorithm Contests (Rujia Liu)
- LeetCode-Multiply Strings
- 软件更新
- struts1.1介绍
- php守护进程
- 【索引】Volume 1. Elementary Problem Solving