获取下载链接
标签
模式引入计算机科学领域已经有20余年了,最初人们侧重于面向对象的设计,而现在已经应用于计算机领域的各个方面,它们对计算机产生了深远影响。 若想一本书涵盖所有模式,那么这本书将会非常庞大,以前的设计模式书籍专注于介绍设计模式,虽然读者了解了这些设计模式,但是仍然不知道如何合理地使用它们,往往导致读者为了使用设计模式而设计,而不是从问题出发,使用设计模式优雅地解决这些问题。 《漫谈设计模式—从面向对象开始》主要从最基本的设计模式入手,并结合一些j2ee开发过程经常遇见的技术和概念,你将全面理解这10多个设计模式,并在开发过程中,让你真正体会和思考面向对象编程的思想,也只有掌握这些,你才会能成为一位真正的设计专家。 《漫谈设计模式—从面向对象开始》不是一本面向对象和java语言的入门书籍,阅读对象主要是从事java语言的软件开发人员但不限于java语言的开发人员。
第一篇 模式介绍 1 第1章 谈面向对象和模式 3 1.1 什么是对象 4 1.2 面向对象的好处 5 1.3 重用 6 1.4 模式简史 7 1.5 什么是模式 8 1.6 学习设计模式的一些常见问题 11 1.7 本章关键词 13 第2章 第1个模式——模板方法(template method)模式 15 2.1 从回家过年说起 16 2.1.1 DRY(don't repeat yourself) 18 2.1.2 变化+重复,如何维护 20 2.2 模板方法(template method)模式 21 2.2.1 使用继承 21 2.2.2 模板方法模式 24 2.3 引入回调(callback) 26 2.4 总结 30 2.5 本章关键词 30 第二篇 创建对象 31 第3章 单例(singleton)模式 33 3.1 最简单的单例 34 3.2 进阶 35 3.2.1 延迟创建 35 3.2.2 线程安全 36 3.2.3 double-check locking 37 3.2.4 initialization on demand holder 39 3.2.5 singleton的序列化 40 3.3 总结 41 3.4 本章关键词 42 第4章 工厂方法(factory method)模式 43 4.1 工厂方法模式 44 4.1.1 类图 44 4.1.2 创建数据库连接对象 47 4.2 静态工厂方法 52 4.3 总结 53 4.4 本章关键词 54 第5章 原型(prototype)模式 55 5.1 原型模式 56 5.2 寄个快递 57 5.3 实现 57 5.3.1 uml静态类图 57 5.3.2 代码实现 58 5.4 深拷贝(deep copy) 61 5.5 总结 65 5.6 本章关键词 65 第6章 控制反转(ioc) 67 6.1 从创建对象谈起 68 6.2 使用工厂方法模式的问题 70 6.3 inversion of control(控制反转) 71 6.3.1 ioc和di(dependency injection,依赖注入) 72 6.3.2 service locator(服务定位器) 73 6.3.3 dependency injection 76 6.4 总结 91 6.5 本章关键词 92 第三篇 构建复杂结构 93 第7章 装饰器(decorator)模式 95 7.1 记录历史修改 96 7.2 open-closed principle(开放—封闭原则,ocp) 99 7.3 装饰器(decorator)模式 101 7.3.1 类图 101 7.3.2 实现 101 7.3.3 一点变化 107 7.3.4 如何使用 108 7.3.5 测试 108 7.4 装饰器模式的优缺点 110 7.5 总结 111 7.6 本章关键词 111 第8章 代理(proxy)模式 113 8.1 代理(proxy)模式 114 8.1.1 类图 114 8.1.2 访问分布式对象 114 8.2 j2se动态代理 122 8.2.1 类和接口 122 8.2.2 调用原理 124 8.2.3 实现同步 125 8.2.4 总结 131 8.3 和装饰器(decorator)模式的比较 131 8.4 总结 132 8.5 本章关键词 132 第9章 适配器(adapter)模式 133 9.1 打桩 134 9.2 其他适配器模式 137 9.2.1 类适配器 137 9.2.2 双向适配器 138 9.3 测试 139 9.4 和代理(proxy)模式的比较 141 9.5 总结 141 9.6 本章关键词 142 第10章 外观(facade)模式 143 10.1 外观(facade)模式 144 10.2 least knowledge principle(最少知识原则) 144 10.3 懒惰的老板请客 145 10.4 ejb里的外观模式 148 10.5 总结 150 10.6 本章关键词 150 第11章 组合(composite)模式 151 11.1 组合模式概述 152 11.1.1 类图 152 11.1.2 使用组合(composite)模式 153 11.1.3 测试 156 11.2 透明的组合模式 159 11.3 安全的组合模式vs透明的组合模式 162 11.4 还需要注意什么 162 11.5 总结 163 11.6 本章关键词 163 第四篇 行为模式 165 第12章 策略(strategy)模式 167 12.1 既要坐飞机又要坐大巴 168 12.2 封装变化 169 12.3 策略模式 172 12.4 还需要继承吗 173 12.5 优先使用合成而非继承 175 12.6 总结 176 12.7 本章关键词 177 第13章 状态(state)模式 179 13.1 电子颜料板 180 13.2 switch-case实现 180 13.3 如何封装变化 181 13.4 状态模式 186 13.5 使用enum类型 186 13.6 与策略(strategy)模式的比较 191 13.7 总结 191 13.8 本章关键词 192 第14章 观察者(observer)模式 193 14.1 股票价格变了多少 194 14.2 观察者模式 194 14.2.1 如何实现 194 14.2.2 观察者模式 201 14.2.3 java标准库的观察者模式 201 14.3 总结 208 14.4 本章关键词 208 第五篇 终点还是起点 209 第15章 面向切面的编程(aop) 211 15.1 记录时间 212 15.2 aop(aspect-oriented programming) 215 15.2.1 一些重要概念 216 15.2.2 oop实现横切 217 15.2.3 aop实现技术 218 15.3 aop框架介绍 244 15.4 aop联盟(aop alliance) 245 15.5 使用aop编程的风险 245 15.6 oop还是aop 246 15.7 总结 247 15.8 本章关键词 248 第16章 面向对象开发 249 16.1 写在面向对象设计之前 250 16.2 汲取知识 251 16.3 横看成岭侧成峰 253 16.4 提炼模型 254 16.5 应用设计模式 259 16.6 不能脱离实现技术 259 16.7 重构 260 16.8 过度的开发(over-engineering) 262 16.9 总结 263 16.10 本章关键词 264 第17章 结语 265 17.1 感悟 266 17.2 面向对象的开发范式 266 17.3 一些原则 268 17.4 写在模式之后 269 17.5 本章关键词 269 附录A 推荐阅读资源 271 1 Java语言相关学习图书 272 2 J2EE技术相关图书 273 3 面向对象设计相关图书 273 4 给Agile(敏捷)开发人员推荐的书籍 275 5 网站和论坛 275 参考文献 277
《代码之外的功夫 程序员精进之路》
厌倦了被代码框死的思维?身为程序员的你,是否曾感觉自己远不止是“敲代码的”?这本书,正是一场为你量身打造的思维盛宴! 它大胆颠覆传统,破天荒地在面向程序员的书籍中,一句代码也不提。因为它深知,优秀的程序员,其核心价值绝非敲击键盘的熟练度,而是将那冰冷的逻辑工具,巧妙化为解决真实世界难题的艺术。 ...
查看详情 →《代码整洁之道》
还在为Bug缠身、修改旧代码如同考古而头疼不已?还在为团队效率低下、项目进度停滞不前而焦虑不安? 无论是崇尚快速迭代的敏捷,还是追求稳健深耕的传统,所有开发者都心知肚明——代码质量,才是项目成败的关键命脉。它不仅是架构和管理的基石,更是日常开发中无处不在的痛点与闪光点。 而这本书,将彻底颠覆你对...
查看详情 →《UML基础、案例与应用》
本书教读者循序渐进地、系统地学习UML基础知识和应用技术。 全书分为三部分24章。第一部分"基础知识"包括第1章到第15章,主要是介绍UML语言的基础知识以及面向对象的概念和思想,还简单介绍了UML在开发过程的应用方法。第二部分"学习案例"包括第16章到第22章,结合实例详细分析了UML的应用...
查看详情 →《了不起的JavaScript工程师》
《了不起的JavaScript工程师:从前端到全端高级进阶》讲述了开发者使用JavaScript在各种Web开发场景下所需要掌握的重点知识和概念。从最基础的开发工具讲起,再到开发思维方式和前端页面开发,然后扩展到小程序开发和开发工具的混合应用,再讲解前后端交互最常用的网络协议及API设计,最后讲解了...
查看详情 →