观察者模式

来源:互联网 发布:2016淘宝客计入权重吗 编辑:程序博客网 时间:2024/06/15 09:12

珠宝商运送一批钻石,有黄金强盗准备抢劫,珠宝商雇佣了私人保镖,警察局也派人护送,于是当运输车上路的时候,强盗保镖警察都要观察运输车一举一动


//抽象的观察者public interface Watcher { public void update();  }

//保安public class Security implements Watcher{@Overridepublic void update() {System.out.println("运输车有行动,保安贴身保护");  }}

//土匪public class Thief implements Watcher{@Overridepublic void update() {System.out.println("运输车有行动,强盗准备动手");}}

//警察public class Police implements Watcher{@Overridepublic void update() {System.out.println("运输车有行动,警察护航"); }}


//抽象的被观察者,在其中声明方法(添加、移除观察者,通知观察者)public interface Watched {    public void addWatcher(Watcher watcher);         public void removeWatcher(Watcher watcher);         public void notifyWatchers(); }

//具体的被观察者public class Transporter implements Watched{private List<Watcher> list = new ArrayList<Watcher>();        @Override      public void addWatcher(Watcher watcher)      {           list.add(watcher);      }       @Override      public void removeWatcher(Watcher watcher)      {           list.remove(watcher);      }   @Overridepublic void notifyWatchers() {for (Watcher watcher : list)          {               watcher.update();          }  }  }


public class Test { public static void main(String[] args)       {            Transporter transporter = new Transporter();              Police police = new Police();            Security security = new Security();            Thief thief = new Thief();              transporter.addWatcher(police);            transporter.addWatcher(security);            transporter.addWatcher(security);              transporter.notifyWatchers();       }  }

原创粉丝点击