观察者模式

2020-12-10  本文已影响0人  joeylong
1、观察者模式定义:

当多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式。

2、观察者模式优点:

降低目标与观察者的耦合度但没有完全解除,建立起一套监听机制。

3、观察者模式结构:
4、代码
/**
 * 抽象生产者(Subject)
 */
abstract class Product {
    protected List<Consumer> consumerList = new ArrayList<>();

    //增加观察者方法
    public void add(Consumer consumer) {
        consumerList.add(consumer);
    }
    //删除观察者方法
    public void remove(Consumer consumer) {
        consumerList.remove(consumer);
    }
    public abstract void notifyObserver(); //通知观察者方法
}
/**
 * 具体生产者(Concrete Subject)
 */
public class ProductA extends Product {
    @Override
    public void notifyObserver() {
        System.out.println("-----ProductA生产消息-----");
        for (Consumer consumer : consumerList) {
            consumer.response("哈喽");
        }
    }
}
/**
 * 抽象观察者(Observer)
 */
public interface Consumer {
    void response(String message); //反应
}
/**
 * 具体观察者(Concrete Observer)
 */
public class ConsumerA implements Consumer {
    @Override
    public void response(String message) {
        System.out.println("-----ConsumerA:ProductA生产者生产了消息:"+message+"-----");
    }
}
/**
 * 具体观察者(Concrete Observer)
 */
public class ConsumerB implements Consumer{
    @Override
    public void response(String message) {
        System.out.println("-----ConsumerB:ProductA生产者生产了消息:"+message+"-----");
    }
}
上一篇 下一篇

猜你喜欢

热点阅读