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() ;
        }
    }
  • 相关阅读:
    Java 的 多态和构造方法
    java 的 抽象类、接口
    java 的 封装 、继承
    eclipse的安装和基本使用、面向对象、类和对象
    方法的重载、引用数据类型、 ArrayList集合
    SQL单行函数
    JAVA
    mysql约束
    MYSQL的常用属性
    mysql的索引
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3804027.html
Copyright © 2011-2022 走看看