Java 设计模式之观察者模式

观察者模式又叫发布订阅模式,是对象的行为模式。观察者模式定义了一种一对多的依赖关系。所有观察者监听被观察者,当被观察者发生改变的时候通知所有的观察者更新操作。

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 addProductListObserver(Observer observer){  //添加观察者
      this.addObserver(observer);
    }
    public void addProduct(String newProduct){  //被观察者添加对象
        productList.add(newProduct);
        System.err.println("新的产品:"+newProduct);
        this.setChanged();
        this.notifyObservers(newProduct);   //唤醒所有的观察者添加新的产品
    }
}

观察者需要实现Observer这个接口

import java.util.Observable;
import java.util.Observer;

public class LanFeng implements Observer {
    @Override
    public void update(Observable o, Object arg) {
        String product = (String)arg;
        System.err.println("发送"+product+"产品到蓝枫");
    }
}

public class Main {

    public static void main(String[] args) {

       ProductList productList= ProductList.getInstance();
       LanFeng lanFeng =new LanFeng();
       productList.addProductListObserver(lanFeng);//这个需要把要通知的观察者添加进去
       productList.addProduct("好东西");
    }
}

发布了15 篇原创文章 · 获赞 4 · 访问量 5885
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览