责任链的描述是:当你想要让一个已上的对象有机会能够处理某个请求的时候,就是使用它。这个模式也挺常用的,比如说Netty中处理各种Handler的Pipline。
场景描述
假设现在要实现一个邮件过滤的功能,将收到的邮件发送给各个过滤器依次执行,下面看下责任链模式如何实现。
责任链的描述是:当你想要让一个已上的对象有机会能够处理某个请求的时候,就是使用它。这个模式也挺常用的,比如说Netty中处理各种Handler的Pipline。
假设现在要实现一个邮件过滤的功能,将收到的邮件发送给各个过滤器依次执行,下面看下责任链模式如何实现。
建造者模式描述是:封装一个产品的构造过程,并允许按步骤构造,是在创建一个对象时使用的。我觉得这种模式还是挺常用的,比如Lombok插件的@Builder。下面就来学习下这个模式的细节。
假设我们现在要创建一个度假计划,客人可以选择宾馆以及各种门票、餐厅定位,甚至可以选择登记参加特殊的活动。我们正常的构造方式很可能像下面一样:
从这个模式开始,都出现在书的附录中,属于不常用的模式。虽然这样,但是我们还是要学习下,哪怕简单地过一下,最起码要知道每个模式的作用是什么。桥接模式的定义是不只改变你的实现,也改变你的抽象。光从定义,不太能够直观地看出这个模式像干啥。下面还是从场景开始分析,慢慢带入进去。
假设现在需要制造电视机的遥控器,每个遥控器都有相同的接口,但是每个电视机的实现各不相同。这个场景很简单,使用继承就能很好的解决问题,下面就按照最简单的方式来实现下。
本章节我们将来学习复合模式的典范:MVC模式,也就是我们一直在用的视图、模型、控制器。将剖析其内部运作细节,从而进一步了解到复合模式的好处。
书中描述了一个MP3播放器的场景,比如说iTune。可以用它的界面加入新的歌曲、管理播放清单、将歌曲改名。播放器有一个小型数据库,记录所有的歌曲合相关的名字合数据。播放器也可以播歌,而播歌时用户界面会显示当时的歌曲标题、运行时间等信息。MVC模式的流程大致如下:
复合模式又叫模式的模式,就是说多个模式可以一个场景下携手合作,成为更强大的存在。本章将重访鸭子模拟器,来学习如何在一个解决方案中结合两个或多个模式,以解决一般或者重复发生的问题。下面我们将与鸭子重聚,从头重建鸭子模拟器,并通过使用一堆模式来赋予它一些有趣的能力。开工……