美文网首页
设计模式(13)-观察者模式

设计模式(13)-观察者模式

作者: zhglance | 来源:发表于2019-06-28 19:33 被阅读0次

观察者模式(Observer Pattern)主要针对对象间的一对多关系,当一个对象发生改变时,所有依赖它的对象都会得到通知,然后这些执行相应的操作。

一、需求举例:

1.当产品经理发布新的需求后,高级架构师负责技术预调研,中级工程师开发demo,初级工程师开始技术储备。

二、类图

三、代码实例

1.观察者父类:EngineerObserver
package com.lance.observer;

public abstract class EngineerObserver {

    public abstract void update();
}

2.产品经理主题类:ProductManagerSubject
package com.lance.observer;

import java.util.ArrayList;
import java.util.List;

public class ProductManagerSubject {

    private List<EngineerObserver> observers = new ArrayList<>();

    private int requestDocumentState;


    public void addObserver(EngineerObserver observer) {
        observers.add(observer);
    }

    public void setRequestDocumentState(int requestDocumentState) {
        this.requestDocumentState = requestDocumentState;
        noticeObservers();
    }

    private void noticeObservers() {
        for (EngineerObserver observer : observers) {
            observer.update();
        }
    }

}

3.初级工程师类:JuniorEngineer
package com.lance.observer;

public class JuniorEngineer extends EngineerObserver {

    @Override
    public void update() {
        System.out.println("Junior Engineer base technical study.");

    }

}

4.中级工程师类:IntermediateEngineer
package com.lance.observer;


public class IntermediateEngineer extends EngineerObserver {

    @Override
    public void update() {
        System.out.println("Intermediate Engineer develop demo.");
    }
}

5.高级工程师类:SeniorEngineer
package com.lance.observer;

public class SeniorEngineer extends EngineerObserver {

    @Override
    public void update() {
        System.out.println("Senior Engineer technology survey.");

    }
}

6.主类:ObserverPattern
package com.lance.observer;

public class ObserverPattern {

    public static void main(String[] args) {


        System.out.println("==========start==========");
        ProductManagerSubject subject = new ProductManagerSubject();
        subject.addObserver(new IntermediateEngineer());
        subject.addObserver(new JuniorEngineer());
        subject.addObserver(new SeniorEngineer());

        subject.setRequestDocumentState(1);

        System.out.println("==========end==========");

    }
}

输出结果:

==========start==========
Intermediate Engineer develop demo.
Junior Engineer base technical study.
Senior Engineer technology survey.
==========end==========

相关文章

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • RxJava设计模式与原理

    标准观察者设计模式 RxJava是一种特殊的观察者模式,首先我们先来看标准的观察者设计模式。在标准观察者模式中,存...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • Guava源码分析——EventBus

    EventBus的设计理念是基于观察者模式的,可以参考设计模式(1)—观察者模式先来了解该设计模式。 1、程序示例...

  • 设计模式之观察者模式

    设计模式之观察者模式 本篇是设计模式系列博客的第四篇,本篇主要学习设计模式中的第二个行为型模式---观察者模式。 ...

  • PHP设计模式之观察者模式

    PHP设计模式之观察者模式

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

网友评论

      本文标题:设计模式(13)-观察者模式

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