美文网首页爱编程,爱生活
Java设计模式<观察者模式>

Java设计模式<观察者模式>

作者: 熬夜的猫头鹰 | 来源:发表于2018-06-16 15:21 被阅读15次

    Java设计模式<观察者模式>

    意图

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

    场景

    • 一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作
    • 一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知

    优点

    • 察者和被观察者是抽象耦合的
    • 建立一套触发机制

    开发场景

    应用一旦启动,系统要做一系列的后续操作

    Demo

    定义观察者

    public interface Observer {
    
        public void update();
    }
    
    
    

    Tomcat

    
    public class Tomcat {
    
        private boolean isStarted = false;
    
        private List<Observer> observers = new ArrayList<Observer>();
    
        public void attach(Observer observer){
            observers.add(observer);
        }
    
        public void notifyAllObservers(){
            for (Observer observer : observers) {
                observer.update();
            }
            observers.clear();
        }
    
        public boolean isStarted() {
            return isStarted;
        }
    
        public void setStarted(boolean started) {
            isStarted = started;
            if(isStarted)
                notifyAllObservers();
        }
    }
    
    

    测试类DemoMain

    public class DemoMain {
        public static void main(String[] args) {
            Tomcat tomcat = new Tomcat();
            tomcat.attach(new Observer() {
                public void update() {
                    System.err.println("post a request to baidu.com");
                }
            });
    
            tomcat.attach(new Observer() {
                public void update() {
                    System.err.println("post a request to taobao.com");
                }
            });
            tomcat.setStarted(true);
         }
    }
    
    

    相关文章

      网友评论

        本文标题:Java设计模式<观察者模式>

        本文链接:https://www.haomeiwen.com/subject/nqjbeftx.html