设计模式(责任链模式、观察者模式)

责任链模式

职责链模式(Chain of Responsibility,又叫责任链):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
1)在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。
2)请求在这条链上传递,直到链上的某一个对象处理此请求为止。
3)发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
责任链模式,我们来举个例子,比如说,我是某一个公司的员工,我想请假,比如,我想请一天假,我的经理就可以帮我处理,如果我想请三天假,那么需要我的主管来处理,如果我想请假一周,那就需要副总来处理,如果我想请假一个月,那就需要总经理来处理,就是说,责任链模式每个责任对应的处理权限不一样,直到找到那个能帮处理批假的那个功能才可以,比如说,我请三天假的时候经理就可以帮我处理,就不需要再往上找能处理此权限的人来处理了,如果再往上找就会浪费时间和资源,那么我如果请假三天,经理的权限就不够,就需要申请主管来处理,找能处理的人来处理,我请假一周的话,主管权限也不够,只能再往上找能处理此事的权限人,如果我请一个月的假,那副总的权限也不够,只能找到总经理来处理此事,但是这样就会浪费很多的资源和时间,所以说这也是一个缺点,责任链不够灵活,而且还有一种情况是,如果我想请假的时候,正好能处理此事的人都在忙,而我的事情一直会得不到处理,那么可能很多事情都将受到影响,放在系统里来说就是影响性能了,就相当于说请求不一定会被处理,这是我对责任链模式一点略博的理解。

观察者模式

又称发布–订阅模式(有时又称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式)。观察者模式完美的将观察者和被观察者的对象分离开,举个例子,用户界面作为观察者,业务数据作为被观察者,两者之间存在“观察”的逻辑,用户界面观察业务数据的变化,当被观察者(业务数据)发生变化时,观察者(用户界面)就会观察到到变化,并作出相应的响应。

观察者模式:观察者模式怎么说呢,这个模式就相当于多个程序依赖于一个程序的时候,这一个程序进行改变的时候,别的程序都能看到这个程序里面的变化,就相当于可见性很高,之前我们学到过一个同步锁,叫volatile锁,这个锁也是有很高的可见性,就是说,多个线程在同时执行一个任务的时候,某一个线程里的数据进行改变的时候,那么别的线程就也会看到这个数据的改变,防止了会重读的问题,我感觉观察者模式和这个同步锁在某种程度上来说是一样的,但是呢,我又感觉同步锁有点像继承,因为,他是当多个程序依赖于一个程序的时候,这个被依赖的程序进行改变的时,这些依赖于这个程序的程序,就能知道,这个程序被改变了,而他们也随之改变,所以我说比较像继承,因为继承就是多个子类继承父类,得到父类的公共的方法和属性,这些方法和属性在被改变时,子类也能获取到这些改变后的方法和属性,所以我感觉观察者模式是一个在继承的关系上又加了可见性。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值