zoukankan      html  css  js  c++  java
  • (7)观察者模式-行为模式

    定义:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
    案例代码:

    /**
     * 主题,维护观察列表,新增,删除,接口
     */
    public class MySubject {
    
        private List<MyObserver> myObservers = new ArrayList<>();
    
       public void addOb(MyObserver myObserver){
            this.myObservers.add(myObserver);
        }
    
        void delOb(MyObserver myObserver){
           this.myObservers.remove(myObserver);
        }
    
        void tongzhi(){
            for (MyObserver ob: myObservers) {
                ob.update();
            }
        }
    }
    /**
     * 具体的主题
     */
    public class ConcreteSubject extends MySubject {
         public void doSomething() {
             //具体业务
             System.out.println("测试主题数据有更新。。。。。");
             //通知列表中所有的观察者
             super.tongzhi();
         }
    }
    

    观察者代码

    /**
     * 观察者接口
     */
    public interface  MyObserver {
        void update();
    }
    
    public class ConcreteObserver implements MyObserver {
        @Override
        public void update() {
            System.out.println("观察者收到消息,进行处理");
        }
    }
    

    测试:

    public class Client {
        public static void main(String[] args) {
            //创建一个主题
            ConcreteSubject concreteSubject = new ConcreteSubject();
    
            //创建一个观察者
            MyObserver concreteObserver = new ConcreteObserver();
    
            //观察
            concreteSubject.addOb(concreteObserver);
            //搞事情
            concreteSubject.doSomething();
        }
    }
    

    个人理解:观察者模式,就是维护观察者列表,通过遍历该列表中的对象调用其方法。

    应用

  • 相关阅读:
    题解[LuoguP7419 「PMOI-2」参天大树]
    UVA11582 巨大的斐波那契数! Colossal Fibonacci Numbers!
    数学专题
    [计蒜客]dp
    [蓝桥杯每日一题]1.3 & 1.4
    【acm】2020icpc南京补题
    [acm]乐师师范学院校赛题解-2020
    西南交通大学峨眉校区第二届"INT"杯程序设计竞赛——决赛
    指针与结构体
    [acm] 动态规划——最长上升子序列
  • 原文地址:https://www.cnblogs.com/xingrui/p/14204172.html
Copyright © 2011-2022 走看看