Java 设计模式之观察者模式

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

import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;

public class ProductList extends Observable {
    private List 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("好东西");
    }
}

你可能感兴趣的:(Java基础,Java设计模式)