zoukankan      html  css  js  c++  java
  • 设计模式20-观察者模式

    1. 概念

        定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新

    2. 案例

        

    package org.demo.observe.demo01;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    abstract class Observer{ //观察者
        abstract void update(String status) ; //更新
    }
    
    abstract class Subject {  //被观察的对象
        protected String status ;
        public Subject(String status){
            this.status = status ; 
        }
        
        
        public String getStatus() {
            return status;
        }
    
        public void setStatus(String status) {
            this.status = status;
        }
    
    
        private List<Observer> observers = new ArrayList<Observer>() ;
        
        public void attach(Observer observer){
            observers.add(observer) ;
        }
        
        public void remove(Observer observer){
            observers.remove(observer) ;
        }
        
        public void MyNotify(){
            for(Iterator<Observer> it = observers.iterator() ; it.hasNext() ;){
                ((Observer)it.next() ).update(status);
            }
        }
    }
    
    
    class Obs01 extends Observer{
    
        @Override
        void update(String status) {
            System.out.println("观察者一发现了变化:"+status);
        }
    }
    
    class Obs02 extends Observer{
    
        @Override
        void update(String status) {
            System.out.println("观察者二发现了变化:"+status);
        }
    }
    
    class ConcreteSubject extends Subject{
    
        public ConcreteSubject(String status) {
            super(status);
        }
        
    }
    public class Demo01 {
        public static void main(String[] args) {
            ConcreteSubject cs = new ConcreteSubject("有新的新闻了 .") ;
            cs.attach(new Obs02()) ;
            cs.attach(new Obs01()) ;
            cs.MyNotify() ;
            cs.setStatus("又来新闻了") ;
            cs.MyNotify() ;
        }
    }
  • 相关阅读:
    angular学习(五)-- Module
    angular学习(四)-- Controller
    angular学习(三)-- $scope
    angular学习(二)-- Directive
    实用css小技巧
    Windows下WebStorm使用SVN(转)
    接口和转码,禁止百度转码
    RGB网页颜色在线取色器
    Java操作Excel文件导入
    设置某指定gridcolumn不可排序:
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3804027.html
Copyright © 2011-2022 走看看