zoukankan      html  css  js  c++  java
  • 观察者模式

    观察者必须在主题中注册,然后主题才能将通知观察者

    观察者模式通常包括下面几个角色:

    1、Subject:抽象主题,它负责管理所有观察者的引用,定时定义主要的事件操作

    2、ConcreteSubject 具体主题:它实现了抽象主题定义的所有接口,当自己发生变化时会通知所有观察者

    3、Observer 观察者:监听主题发生变化的接口

    Subject

    package design.pattern.observer;
    
    public interface Subject {
        public void addObserver(Observer observer);
        public void putMsg();
    }

    Observer

    package design.pattern.observer;
    
    public interface Observer {
        public void run();
    }

    ConcreteSubject

    package design.pattern.observer;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class ConcreteSubject implements Subject{
        private List<Observer> list = new ArrayList<>();
        
        public void addObserver(Observer observer) {
            list.add(observer);
        }
        
        public void putMsg() {
            for (Observer observer: list) {
                observer.run();
            }
        }
    }

    ConcreteObserverA

    package design.pattern.observer;
    
    public class ConcreteObserverA implements Observer {
        @Override
        public void run() {
            System.out.println("ConcreteObserverA get msg");
        }
    
    }

    ConcreteObserverB

    package design.pattern.observer;
    
    public class ConcreteObserverB implements Observer{
        @Override
        public void run() {
            System.out.println("ConcreteObserverB get msg");
        }
    }

    Client

    package design.pattern.observer;
    
    public class Client {
        public static void main(String[] args) {
            Subject sub = new ConcreteSubject();
            sub.addObserver(new ConcreteObserverA());
            sub.addObserver(new ConcreteObserverB());
            sub.putMsg();
        }
    }
  • 相关阅读:
    老男孩python学习_day004知识点
    老男孩python学习_day003作业
    老男孩python学习_day003知识点
    老男孩python学习_day002知识点
    老男孩python学习_day001知识点
    老男孩python学习_day002作业
    老男孩python学习_day001作业
    Struts2+Spring4+Hibernate4整合超详细教程
    解决 Ubuntu15.04 登陆界面无限循环 的问题
    jsp之间url传值出现中文乱码
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7243623.html
Copyright © 2011-2022 走看看