您的位置:首页 > 其它

《Head First设计模式》——榫与卯

2018-01-07 17:21 99 查看
书本简介

个人感想

参考文献

1.书本简介

设计模式不仅仅是面试的时候会用到,在进行构件设计时必然会涉及到相关思想,例如Java I/O流中的装饰模式,Spring源码中的责任链、代理、观察者模式。所以可谓必修之课。

书本分为了2个部分,第一部分为前11章,运用各种生动有趣的生活化例子介绍了常用的设计模式,例如鸭子、气象站、咖啡店、披萨店。第二部分为后三章,包含了对全书的总结、没介绍但是依然重要的设计模式们。

第一章“设计模式入门”。用真是鸭子和橡皮鸭的叫声不同的需求,来为我们展现了设计模式的作用和OOP中的“面向接口编程”思想。

第二章“观察者模式”。用气象站不同公示板展示不同种类的参数的需求,为我们展示了如何通过该模式建立一个扩展性强,满足“开闭原则”的构件。

第三章“装饰者模式”。模拟的是咖啡店冲泡咖啡的价格计算。每多一种原料,便用的原料类装饰一下咖啡,增添咖啡的价格和描述。原料包括加奶、加糖、豆浆等。

第四章“工厂模式”。围绕着披萨主题,用不同地区的披萨店的不同味道披萨的创建过程,为我们展示了为什么我们需要工厂模式,以及工厂模式的强扩展性、高可维护性。

第五章“单件模式”。单例模式在很多场景都会用到,比如Windows的“任务管理器”[1]。该章的单例构造考虑到了多线程情况下的单例数据同步问题,构造了一个经典的单例类。

第六章“命令模式”。本章模拟一设定了不同命令的遥控器控制家具的情形,通过为遥控器设定不同的命令,即可通过简单的命名按钮控制家具,如电灯、电视、空调。

第七章“适配器模式与外观模式”。适配器模式的定义——将一个类的接口转换成客户期望的另一个接口,让原本接口不兼容的累可以合作无间,很好的诠释了适配器模式的作用。外观模式个人认为类似“命令模式”,只是该模式下,一个“按钮”包含了多个命令,如家庭影院中,命令模式要逐个按下调暗灯光、打开DVD、投影机、自动屏幕、音响按钮,而外观模式直接按下“看电影”按钮即可。

第八章“模板方法模式”。这章比较抽象,模板方法的定义是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。例如,为了实现元素的比较,类实现Comparable接口,图形化设计中继承JFram与Applet。

第九章“迭代器和组合模式”。该章围绕早餐饼屋和正餐店的菜单,展开了这2种模式的描述。迭代器既是一种模式,又是一个Java自带的接口,让目标类提供方法顺序访问自身的集合对象,而又不暴露其内部的表示。该章利用了迭代器打印了2个店子的菜单。

组合模式十分抽象,其定义是“运行你讲对象组合成树形结构来表现”整体/部分“层次结构,让客户以一致的方式处理个别对象以及对象组合。在该章用例中,树中根节点是”所有菜单“,叶子节点是”菜单项“。

第十章“状态模式”。本章用的是街头糖果机作为引导例子,糖果机的状态包括无硬币、有硬币、售出糖果、糖果售罄四种状态,由一系列动作引发状态的变换。这让我想到了计算机网络的TCP协议可靠数据传输的原理中的FSM(状态转换机),原来总是想不通如何实现FSM,读完该章犹如醍醐灌顶,酣畅淋漓。

第十一章“代理模式”。代理模式指的是为另一个对象提供一个替身或占位符以控制对这个对象的访问。这章中例子很多,个人认为好懂的是书中的约会点赞模块,只能给别人点赞评分,不能给自己刷分。然而,代理模式中涉及到Java的反射,这需要有深厚的Java功底。

2.个人感想

榫与卯:天人合一的千年技艺。

古代建筑大师在设计过程中,往往讲究的是细节,总所周知,榫卯被称作家具的“灵魂”,木构件上凸出的榫头与凹进去的卯眼,简单地咬合,便将木构件结合在一起,由于连接构件的形态不同,由此衍生出千变万化的组合方式,使家具达到功能与结构的完美统一[2]。

这不正是完美解释了“设计模式”的作用么?Java的类在我们手中,犹如一块块或凸或凹的木块,正是“设计模式”的存在,让类之间相互连接、组合,演变出高质量、可扩展、高可用的程序构件。

父母常常对我说一句话:万丈高楼平地起。不是谁一来就能够成为系统构架师,往往应该学好如何设计一个系统基础构件。

附上学习过程中随手敲的Demo:https://github.com/BlackButtonCC/HeadFirstDesignPatternDemo

3.参考文献

【1】单例模式的常见应用场景:http://blog.csdn.net/tanyujing/article/details/14160941

【2】榫卯:天人合一的千年技艺灵魂:http://www.cnarts.net/cweb/news/read.asp?id=330624
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息