设计模式之观察者模式

观察者模式(发布-订阅)

对象间一种一对多的依赖关系,一的方的对象改变,则所有依赖于它的对象都会得到通知并自动更新。
本质:触发联动
有点类似于监听器模式,下面进行简单的说明
监听器模式:本质也还是触发联动,本人认为监听器本质是观察者模式的进阶,可以将事件源(谁)将主题进行变化封装成一个对象(事件),然后再将这个事件推给感兴趣的对象(注册的对象),多个主题可以由统一的事件管理器(特殊的类)进行处理,管理器维持着(事件类型-监听者Listener之间的关系,一般用Map<event.class,List>保存)
监听器模式这个可能后面的设计模式不会写,想要我快点写个案例的话可以留个言

//观察者接口
public interface Observer {

   void  update(int interest);
}
//实现观察者接口
public class Observer1 implements Observer {

    @Override
    public void update(int interest) {
        System.out.println("我被更新啦");
    }
}
//被观察的主题
public class Subject {

    private int target;
    //当主题对象变化时,需要通知的对象集,在Spring中可以使用自动注入的方式减少耦合
    //但是对于代码的调用链的查找就不太友好了
    private List<Observer> observers = new ArrayList<>();


    public void update(int target){
        this.target = target;
        observers.forEach(o->{
            o.update(target);
        });
    }
    //向主题注册需要观察此对象变化的观察者
    public void register(Observer observer){
        observers.add(observer);
    }
    //向主题移除指定的观察者
    public void remove(Observer observer){
        observers.remove(observer);
    }
}

客户端测试

public class ObserverClient {
    public static void main(String[] args) {
        Subject subject = new Subject();
        subject.register(new Observer1());//没有Spring使用手动注册
        subject.update(10100);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值