• 观察者模式


    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象

     

    当降低了系统的耦合度,但是又要维持对象之间行动的协调一致,那么可以采用观察者模式

     

    观察者模式结果


     

    抽象主题角色:把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。

    抽象观察者角色:为所有的具体观察者定义一个接口,在得到主题的通知时更新自己。

    具体主题角色:将有关状态存入具体观察者对象,在具体主题的内部状态改变时,给所有登记过的观察者发出通知。

    具体观察者角色:存储与主题的状态合适的状态。

     

    interface Subject { 
    public void attach(Observer observer); 
       public void detach(Observer observer); 
       void notifyObservers(); 
    } 
    package cai.milenfan.basic.test; 
     
    import java.util.Enumeration; 
    import java.util.Vector; 
     
    /*具体主题角色是实现了抽象主题Subject的一个具体类,它给出了以上三个操作的具体实现 
      */ 
    public class ConcreteSubject implements Subject{
       private Vector observersVector = new java.util.Vector(); 
    public void attach(Observer observer) { 
           observersVector.addElement(observer); 
       } 
       public void detach(Observer observer){ 
           observersVector.removeElement(observer); 
       } 
       public void notifyObservers(){ 
    java.util.Enumeration enumeration = observers();
    while (enumeration.hasMoreElements()) 
           { 
    ((Observer)enumeration.nextElement()).update(); 
    } 
    } 
       public Enumeration observers(){ 
           return ((java.util.Vector) observersVector.clone()).elements(); 
       } 
    } 
    package cai.milenfan.basic.test; 
    //抽象观察者角色 
    public interface Observer { 
    void update(); 
    } 
    package cai.milenfan.basic.test; 
     
    public class ConcreteObserver implements Observer{ 
    public void update() { 
    //write your code here 
    } 
    } 

     

  • 相关阅读:
    python动态规划解决矩阵连乘
    ISCC2019-digdigdig
    MultiSelectComboBox(一)
    中国地图 xaml Canvas
    NotificationObject.cs
    DelegateCommand.cs
    SQL-PIVOT 数据透视 行列转换
    中国行政区域(省,市,县)SQL
    WCF自定义地址路由映射(不用svc文件)
    java下载安装,环境变量,hello world
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1935890.html
Copyright © 2020-2023  润新知