龙空技术网

「案例学习」观察者模式

java笔记 46

前言:

眼前姐妹们对“java观察者模式代码怎么写”大约比较讲究,姐妹们都需要了解一些“java观察者模式代码怎么写”的相关内容。那么小编在网摘上搜集了一些对于“java观察者模式代码怎么写””的相关内容,希望朋友们能喜欢,看官们一起来学习一下吧!

案例说明

当有新产品到来时,要通知JD、TT等。伪代码:

if(有新产品){ 推送 JD; 推送 TT;}

可见,当要推送的平台变化,达到百个,这段代码要改,代码会越来很长,逻辑如果更复杂就更难维护了。可以采用观察者模式如下,当再添加平台时,几乎不用改代码。

被观察者(自变量)

package com.example.cheatroom.observable;import java.util.ArrayList;import java.util.List;import java.util.Observable;import java.util.Observer;public class ProductList extends Observable {    private List<String> productList = null;//产品列表    private static ProductList instance;//类唯一实例    private ProductList(){}; //构造方法私有化    public static ProductList getInstance(){        if(instance==null){            instance=new ProductList();            instance.productList=new ArrayList<>();        }        return instance;    }    public void addProductObserver(Observer observer){        this.addObserver(observer);    }    public void addProduct(String newProduct){        productList.add(newProduct);        System.out.println("产品列表新增了产品:"+newProduct);        this.setChanged();        this.notifyObservers(newProduct);    }}
观察者(因变量)
package com.example.cheatroom.observable;import java.util.Observable;import java.util.Observer;public class JDObserver implements Observer {    @Override    public void update(Observable o, Object product) {        System.out.println("product = " + product);    }}
package com.example.cheatroom.observable;import java.util.Observable;import java.util.Observer;public class TaoBaoObserver implements Observer {    @Override    public void update(Observable o, Object arg) {        System.out.println("arg = " + arg);    }}
测试用例
package com.example.cheatroom.observable;import org.junit.jupiter.api.Test;public class TestObserver {    @Test    public void test() {        ProductList productList=ProductList.getInstance();        productList.addObserver(new JDObserver());        productList.addObserver(new TaoBaoObserver());        productList.addProduct("新产品");    }}

测试结果

参考

1.《Java EE互联网轻量级框架整合开发—SSM框架和Redis实现》

标签: #java观察者模式代码怎么写