阅读笔记常见的设计模式之二:观察者模式

1.介绍
一种使用频率非常高的模式,标准订阅-发布系统,这个模式的一个重要作用就是解耦,将观察者和被观察者解耦,使得他们的依赖性更小,甚至毫无联系。

2.定义
定义对象之间一对多的关系,使得每当一个对象改变,则所有它依赖的对象都得到通知并自动更新。

3.使用场景
关联行为场景,需要注意的时,关联行为是可拆分的,而不是组合关系;
事件多极出发场景;
跨系统的信息交换,消息队列,事件总线的处理机制;

4.简单实现

public class Coder implements Observer{
public String name;
public Coder(String name)
{
this.name=name
}
@override
public void update(Observable o,Object arg){
system.out.println("Hi"+name+"内容更新了"+arg);
}
@override
public void tostring()
{
retunr "码农:"+name
}
}

public class DevTechFrontier extends Observable{
public void postNewPublication(String content){
setChanged();
notifyObservers(content);
}
}

public class Test{
public static void main(string [] args){
DevTechFrontier dev=new DevTechFrontier();
Coder coder1=new Coder("coder-1");
Coder coder2=new Coder("coder-2");
Coder coder3=new Coder("coder-3");
dev.addObserver(coder1);
dev.addObserver(coder2);
dev.addObserver(coder3);
dev.postNewPublication("发布了");
}
}

Observer和Observable是JDK中内置类型,可见观察者模式的重要。Coder作为观察者,DevTechFrontier作为被观察者,两者之间完全没有耦合,保证了订阅系统的灵活性扩展性。在我看来,正是因为观察者的内置存在,导致我们使用起来只需要实现具体的观察者和被观察者,然后在需要使用的地方调用被观察者的addObserver将观察者加入,最后需要改变的时候调用被观察者的postNewPublication方法即可。
5.实战

6.总结

1.练手项目:https://www.jianshu.com/p/cb6cfee4c1cc

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值