• 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 }

     测试结果:

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    MySql 插入(insert)性能测试 zt 武胜
    mysql日期 武胜
    Some Useful Extension Methods On IList<T> zt 武胜
    SQL语句 武胜
    MySql bulk load zt 武胜
    C# 结构体初始化 武胜
    备忘 武胜
    C# 批量插入Mysql zt 武胜
    Use C# to get JSON Data from the Web and Map it to .NET Class => Made Easy! 转 武胜
    开发例子 转http://www.google.com.hk/search?newwindow=1&safe=strict&client=firefoxa&hs=Gzw&rls=org.mozilla%3AzhCN%3Aofficial&q=%E5%8D%83%E5%8F%91&oq=%E5% 武胜
  • 原文地址:https://www.cnblogs.com/aeon/p/7737715.html
Copyright © 2020-2023  润新知