Chinaunix首页 | 论坛 | 博客
  • 博客访问: 174414
  • 博文数量: 38
  • 博客积分: 638
  • 博客等级: 下士
  • 技术积分: 395
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-07 17:16
文章分类

全部博文(38)

文章存档

2013年(1)

2012年(5)

2011年(32)

分类: Java

2012-09-05 14:17:50


点击(此处)折叠或打开

  1. abstract class Subject {
  2.     private Vector<Observer> obs = new Vector<Observer>();
  3.     
  4.     public void addObserver(Observer object) {
  5.         this.obs.add(object);
  6.     }
  7.     
  8.     public void delObserver(Observer object) {
  9.         this.obs.remove(object);
  10.     }
  11.     
  12.     protected void notifyObserver() {
  13.         for (Observer o : obs) {
  14.             o.update();
  15.         }
  16.     }
  17.     
  18.     public abstract void doSomething();
  19. }

  20. class ConcreteSubject extends Subject {

  21.     @Override
  22.     public void doSomething() {
  23.         // TODO Auto-generated method stub
  24.         System.out.println("Start");
  25.         this.notifyObserver();
  26.     }
  27.     
  28. }

  29. interface Observer {
  30.     public void update();
  31. }

  32. class ConcreteObserver1 implements Observer {

  33.     @Override
  34.     public void update() {
  35.         // TODO Auto-generated method stub
  36.         System.out.println("ConcreteObserver1 start");
  37.     }
  38.     
  39. }

  40. class ConcreteObserver2 implements Observer {

  41.     @Override
  42.     public void update() {
  43.         // TODO Auto-generated method stub
  44.         System.out.println("ConcreteObserver2 start");
  45.     }
  46.     
  47. }
  48. public class ObserverMode {
  49.      public static void main(String[] args){
  50.          Subject sub = new ConcreteSubject();
  51.          sub.addObserver(new ConcreteObserver1());
  52.          sub.addObserver(new ConcreteObserver2());
  53.          sub.doSomething();
  54.      }
  55. }

阅读(1578) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~