纯css打造立体时钟
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
By_jie

1:n Oberserver模式

 1 package edu.aeon.model.oberserver;
 2 
 3 /**
 4  * 通职者接口     
 5  * @author lzj
 6  * 2017年10月26日 下午4:22:29
 7  */
 8 public interface Notify {
 9     /**
10      * 注册一个观察者
11      * at 2017年10月26日 下午4:20:31 by lzj
12      * @Parameters1 Watcher watcher
13      * @Returns void
14      */
15     public void addWatcher(Watcher watcher);
16     /**
17      * 删除一个观察者
18      * at 2017年10月26日 下午4:21:19 by lzj
19      * @Parameters1 Watcher watcher
20      * @Returns void
21      */
22     public void removeWatcher(Watcher watcher);
23     /**
24      * 通知观察者
25      * at 2017年10月26日 下午4:21:47 by lzj
26      * @Parameters1 无
27      * @Returns void
28      */
29     public void notifyWatcher(String str); //通知观察者
30 }
 1 package edu.aeon.model.oberserver;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 
 5 /**
 6  * 观察者的添加、删除、以及接收到观察者动态变化时做出的相应行为
 7  * @author lzj
 8  * @create 2017年10月26日 下午4:26:49
 9  * @describe
10  */
11 public class Watched implements Notify {
12 
13     private List<Watcher> list=new ArrayList<Watcher>();
14     /* (non-Javadoc)
15      * @see edu.aeon.model.oberserver.Watched#addWatcher(edu.aeon.model.oberserver.Watcher)
16      */
17     @Override
18     public void addWatcher(Watcher watcher) {
19         list.add(watcher);
20     }
21 
22     /* (non-Javadoc)
23      * @see edu.aeon.model.oberserver.Watched#delWatcher(edu.aeon.model.oberserver.Watcher)
24      */
25     @Override
26     public void removeWatcher(Watcher watcher) {
27         list.remove(watcher);
28     }
29 
30     /* (non-Javadoc)
31      * @see edu.aeon.model.oberserver.Watched#notifyWatcher(java.lang.String)
32      */
33     @Override
34     public void notifyWatcher(String str) {
35         //for循环更新所有观察者的状态
36         for(Watcher watcher : list) {
37             watcher.update(str);
38         }
39     }
40 }
 1 package edu.aeon.model.oberserver;
 2 
 3 /**
 4  * 观察者接口
 5  * @author lzj
 6  * @create 2017年10月26日 下午4:24:55
 7  */
 8 public interface Watcher {
 9     public void update(String str);
10 }
 1 package edu.aeon.model.oberserver;
 2 
 3 /**
 4  * @author lzj
 5  * @create 2017年10月26日 下午4:30:45
 6  * @describe
 7  */
 8 public class Person1 implements Watcher{
 9 
10     /* (non-Javadoc)
11      * @see edu.aeon.model.oberserver.Watcher#update(java.lang.String)
12      */
13     @Override
14     public void update(String str) {
15         System.out.println(this.getClass().getName().toString()+str);
16     }
17     
18 }
 1 package edu.aeon.model.oberserver;
 2 
 3 /**
 4  * @author lzj
 5  * @create 2017年10月26日 下午4:39:28
 6  * @describe
 7  */
 8 public class Person2 implements Watcher {
 9 
10     /* (non-Javadoc)
11      * @see edu.aeon.model.oberserver.Watcher#update(java.lang.String)
12      */
13     @Override
14     public void update(String str) {
15         System.out.println(this.getClass().getName().toString()+str);
16     }
17 
18 }
 1 package edu.aeon.model.oberserver;
 2 
 3 /**
 4  * @author lzj
 5  * @create 2017年10月26日 下午12:46:37
 6  * @describe
 7  */
 8 public class TestObserver {
 9 
10     /**
11      * at 2017年10月26日 下午12:46:37 by lzj
12      * @Parameters1
13      * @Returns void
14      */
15     public static void main(String[] args) {
16         Notify n=new Watched();
17         Person1 p1=new Person1();
18         Person2 p2=new Person2();
19         //注册两位观察者对象、然后开启广播
20         n.addWatcher(p1);
21         n.addWatcher(p2);
22         //广播通知注册的两位观察者:下雨了、去收衣服 !
23         n.notifyWatcher("下雨了、去收衣服 !");
24     }
25 }

 测试结果:

 

posted @ 2017-10-26 16:56  1024军团  阅读(965)  评论(0编辑  收藏  举报