首页 > 软件开发 > JAVA >

java设计模式

来源:互联网 2023-03-16 19:31:33 版权归原作者所有,如有侵权,请联系我们

观察者模式又称发布订阅模式,是对象行为模式1iY办公区 - 实用经验教程分享!

方法/步骤

  • 1

    观察者模式又称发布订阅模式,是对象行为模式;观察者定义了一种一对多的依赖关系,让多个观察者对象同时监视着被观察者的状态,当被观察者的状态发生改变时,会通知所有的观察者,并让其自动更新自己。1iY办公区 - 实用经验教程分享!

    java设计模式1iY办公区 - 实用经验教程分享!

  • 2

    observer(观察者)?想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个 通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦 观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对 象,使他们能够自动更新自己。1iY办公区 - 实用经验教程分享!

    java设计模式1iY办公区 - 实用经验教程分享!

  • 3

    观察者模式要同时存在观察者和被观察者双方,观察者可以是多个,在java中需要去继承java.util.Observable类,先看被观察者------------一个产品列表1iY办公区 - 实用经验教程分享!

    import java.util.ArrayList;import java.util.List;import java.util.Observable;import java.util.Observer;1iY办公区 - 实用经验教程分享!

    public class ProductList extends Observable{private ListString> productList = null;private static ProductList instance;private ProductList(){}1iY办公区 - 实用经验教程分享!

    java设计模式1iY办公区 - 实用经验教程分享!

  • 4

    public static ProductList getInstance(){if(instance == null){instance = new ProductList();instance.productList = new ArrayListString>();}return instance;}public void addProductListObservable(Observer observer){this.addObserver(observer);}public void addProduct(String newProduct){productList.add(newProduct);System.out.println("产品列表新增了产品" newProduct);this.setChanged();//设置被观察者对象发生改变this.notifyObservers(newProduct);//通知观察者并传递新产品}}1iY办公区 - 实用经验教程分享!

    1iY办公区 - 实用经验教程分享!

    1iY办公区 - 实用经验教程分享!

    java设计模式1iY办公区 - 实用经验教程分享!

  • 5

    public class JingDongObserver implements Observer{1iY办公区 - 实用经验教程分享!

    @Overridepublic void update(Observable o, Object product) {String newProduct = (String) product;System.out.println("发送新产品" newProduct "同步到京东商城");}1iY办公区 - 实用经验教程分享!

    1iY办公区 - 实用经验教程分享!

    java设计模式1iY办公区 - 实用经验教程分享!

  • 6

    观擦者模式易于扩展,责任也更加清晰,观察者会根据被观察对象的变化二作出相应的行为;1iY办公区 - 实用经验教程分享!

    java设计模式1iY办公区 - 实用经验教程分享!

  • 7

    }public class TaoBaoObserver implements Observer{1iY办公区 - 实用经验教程分享!

    @Overridepublic void update(Observable o, Object product) {String newProduct = (String) product;System.out.println("发送新产品" newProduct "同步到京东商城");}}1iY办公区 - 实用经验教程分享!

    1iY办公区 - 实用经验教程分享!

    java设计模式1iY办公区 - 实用经验教程分享!

  • 8

    public class TestObserver {public static void main(String[] args) {ProductList observable = ProductList.getInstance();TaoBaoObserver taoBaoObserver = new TaoBaoObserver();JingDongObserver jingDongObserver = new JingDongObserver();observable.addObserver(taoBaoObserver);observable.addObserver(jingDongObserver);observable.addProduct("新增产品1");}}1iY办公区 - 实用经验教程分享!

    1iY办公区 - 实用经验教程分享!

    java设计模式1iY办公区 - 实用经验教程分享!

  • 8本页面未经许可获取自百度经验
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!1iY办公区 - 实用经验教程分享!


    标签: JAVA

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号