《研磨设计模式》读书笔记之:装饰器模式、职责链模式

前言:本篇系看完《研磨设计模式》一书的个人理解和总结,可能存在不正确的地方,看时需要持怀疑态度。另外,所有的图都是示意图,示意,示。

装饰器模式(Decorator):

几点解释:

  1. 装饰器模式的本质在于,透明的给对象增加新的功能,并且这些功能可以灵活的组合和增减。
  2. 如果没有了那个抽象类,其实就和代理模式的结构是一致的了,二者的区别已经在前面代理模式说过了。
  3. 装饰对象会持有一个实际的对象或者是已经被装饰之后的对象,因为大家都是实现了同一个接口。通过层层嵌套的方式,给实际的对象增加很多新的功能。
  4. 实际使用时,需要在客户端先创建实际的对象,之后将其传入一个装饰对象中,之后还可以将装饰对象再传入装饰对象之中。实际调用时,是向最外层的装饰对象发起调用,之后的过程有点类似于递归调用。
  5. Java中的IO库,使用的就是装饰器模式,各种的 InputStream 可以灵活的嵌套使用。

职责链模式(Chain of Responsibility):

几点解释:

  1. 职责链模式的本质在于 将各种不同的职责分离并封装,使得在使用时可以动态组合。
  2. 一个请求过来,会有多个对象都有机会处理,此时将这些对象组装成链(内链、外链),只需要将请求发送给第一个对象,这个请求就会在职责链中传递,标准的职责链有一个对象处理了就会返回。
  3. 如果将职责链进行变形,不是有一个处理就返回,而是每个对象都会做出一些处理,处理完成后将请求传递给下一个对象,此时就变成了一条功能链。职责链变形成功能链之后,其实和装饰模式很像了,装饰模式也是一条链。不同点在于:装饰模式大多相互依赖,这个装饰对象一般会依赖上一个装饰对象返回的结果,并在此基础上进行进一步操作,而职责链模式一般相互独立,各处理各的,处理完只是简单的将请求转发给下一个对象。
  4. 链的形成可以是内链,即 一个对象持有下一个对象的引用,依次调用,也可以用有序容器将这些对象组装为外链,由外部统一调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值