基本信息
书名:设计模式与开发实践
:59.00元
作者:曾探
出版社:人民邮电出版社
出版日期:2015-05-01
ISBN:9787115388889
字数:
页码:
版次:1
装帧:平装
开本:16开
商品重量:0.4kg
编辑推荐
腾讯前端Alloy Team团队出品,资深前端工程师曾探力作
全面涵盖专门针对的16个设计模式
深入剖析面向对象设计原则、编程技巧及代码重构
设计模式是软件设计中经过了大量实际项目验证的可复用的解决方案,它有助于程序员写出可复用和可维护性高的程序。许多的开源框架都运用了不少设计模式,越来越多的程序员从设计模式中获益,也许是改善了自己编写的某个软件,也许是更好地理解了面向对象的编程思想。无论如何,系统地学习设计模式都会令你受益匪浅。
内容提要
《设计模式与开发实践》在尊重《设计模式》原意的同时,针对语言特性全面介绍了更适合程序员的了16个常用的设计模式,讲解了面向对象和函数式编程方面的基础知识,介绍了面向对象的设计原则及其在设计模式中的体现,还分享了面向对象编程技巧和日常开发中的代码重构。本书将教会你如何把**的设计模式应用到语言中,编写出优美高效、结构化和可维护的代码。
目录
部分基础知识
第1章 面向对象的
1.1动态类型语言和鸭子类型
1.2多态
1.3封装
1.4原型模式和基于原型继承的对象系统
第2章 this、call和apply
2.1this
2.2call和apply
第3章 闭包和高阶函数
3.1闭包
3.2高阶函数
3.3小结
第二部分设计模式
第4章 单例模式
4.1实现单例模式
4.2透明的单例模式
4.3用代理实现单例模式
4.4中的单例模式
4.5惰性单例
4.6通用的惰性单例
4.7小结
第5章 策略模式
5.1使用策略模式计算奖金
5.2版本的策略模式
5.3多态在策略模式中的体现
5.4使用策略模式实现缓动动画
5.5更广义的“算法”
5.6表单校验
5.7策略模式的优缺点
5.8一等函数对象与策略模式
5.9小结
第6章 代理模式
6.1个例子——小明追MM的故事
6.2保护代理和虚拟代理
6.3虚拟代理实现图片预加载
6.4代理的意义
6.5代理和本体接口的一致性
6.6虚拟代理合并请求
6.7虚拟代理在惰性加载中的应用
6.8缓存代理
6.9用高阶函数动态创建代理
6.10其他代理模式
6.11小结
第7章 迭代器模式
7.1jQuery中的迭代器
7.2实现自己的迭代器
7.3内部迭代器和外部迭代器
7.4迭代类数组对象和字面量对象
7.5倒序迭代器
7.6中止迭代器
7.7迭代器模式的应用举例
7.8小结
第8章 发布—订阅模式
8.1现实中的发布—订阅模式
8.2发布—订阅模式的作用
8.3DOM事件
8.4自定义事件
8.5发布—订阅模式的通用实现
8.6取消订阅的事件
8.7真实的例子——网站登录
8.8全局的发布—订阅对象
8.9模块间通信
8.10必须先订阅再发布吗
8.11全局事件的命名冲突
8.12实现发布—订阅模式的便利性
8.13小结
第9章 命令模式
9.1命令模式的用途
9.2命令模式的例子——菜单程序
9.3中的命令模式
9.4撤销命令
9.5撤消和重做
9.6命令队列
9.7宏命令
9.8智能命令与傻瓜命令
9.9小结
第10章 组合模式
10.1回顾宏命令
10.2组合模式的用途
10.3请求在树中传递的过程
10.4更强大的宏命令
10.5抽象类在组合模式中的作用
10.6透明性带来的安全问题
10.7组合模式的例子——扫描文件夹
10.8一些值得注意的地方
10.9引用父对象
10.10何时使用组合模式
10.11小结
第11章 模板方法模式
11.1模板方法模式的定义和组成
11.2个例子——CoffeeorTea
11.3抽象类
11.4模板方法模式的使用场景
11.5钩子方法
11.6好莱坞原则
11.7真的需要“继承”吗
11.8小结
第12章 享元模式
12.1初识享元模式
12.2内部状态与外部状态
12.3享元模式的通用结构
12.4文件上传的例子
12.5享元模式的适用性
12.6再谈内部状态和外部状态
12.7对象池
12.8小结
第13章 职责链模式
13.1现实中的职责链模式
13.2实际开发中的职责链模式
13.3用职责链模式重构代码
13.4灵活可拆分的职责链节点
13.5异步的职责链
13.6职责链模式的优缺点
13.7用AOP实现职责链
13.8用职责链模式获取文件上传对象
13.9小结
第14章 中介者模式
14.1现实中的中介者
14.2中介者模式的例子——泡泡堂游戏
14.3中介者模式的例子——购买商品
14.4小结
第15章 装饰者模式
15.1模拟传统面向对象语言的装饰者模式
15.2装饰者也是包装器
15.3回到的装饰者
15.4装饰函数
15.5用AOP装饰函数
15.6AOP的应用实例
15.7装饰者模式和代理模式
15.8小结
第16章 状态模式
16.1初识状态模式
16.2状态模式的定义
16.3状态模式的通用结构
16.4缺少抽象类的变通方式
16.5另一个状态模式示例——文件上传
16.6状态模式的优缺点
16.7状态模式中的性能优化点
16.8状态模式和策略模式的关系
16.9版本的状态机
16.10表驱动的有限状态机
16.11实际项目中的其他状态机
16.12小结
第17章 适配器模式
17.1现实中的适配器
17.2适配器模式的应用
17.3小结
第三部分设计原则和编程技巧
第18章 单一职责原则
18.1设计模式中的SRP原则
18.2何时应该分离职责
18.3违反SRP原则
18.4SRP原则的优缺点
第19章 少知识原则
19.1减少对象之间的联系
19.2设计模式中的LKP原则
19.3封装在LKP原则中的体现
第20章 开放-封闭原则
20.1扩展window.onload1函数
20.2开放和封闭
20.3用对象的多态性消除条件分支
20.4找出变化的地方
20.5设计模式中的开放—封闭原则
20.6开放—封闭原则的相对性
20.7接受次愚弄
第21章 接口和面向接口编程
21.1回到Java的抽象类
21.2interface
21.3语言是否需要抽象类和interface
21.4用鸭子类型进行接口检查
21.5用TypeScript编写基于interface的命令模式
第22章 代码重构
22.1提炼函数
22.2合并重复的条件片段
22.3把条件分支语句提炼成函数
22.4合理使用循环
22.5提前让函数退出代替嵌套条件分支
22.6传递对象参数代替过长的参数列表
22.7尽量减少参数数量
22.8少用三目运算符
22.9合理使用链式调用
22.10分解大型类
22.11用return退出多重循环
参考文献
作者介绍
曾探
2007年毕业于吉林大学软件学院。就职于国内知名前端团队腾讯AlloyTeam,高级工程师。
曾参与Web 、群、Q 开发者网站、微云、兴趣部落等大型前端项目的开发。有过Java、Python和的开发经验,业余作品有HTML5版街头霸王等。
平时喜欢电影和音乐,业余时间也是一名健身教练。
文摘
序言
这本书给我带来的震撼,远超我最初的预期。一直以来,我总觉得自己对JavaScript的掌握已经相当不错,能够写出一些功能性的代码,也看过不少框架的源码。然而,翻开《JavaScript设计模式与开发实践》的扉页,我才意识到,我只是在“写”JavaScript,而非“理解”和“驾驭”它。书中的每一个设计模式,都像是一把解锁新大陆的钥匙。例如,单例模式的讲解,不仅让我明白了为什么有些对象只需要一个实例,更让我看到了如何在实际项目中应用它来管理全局状态,避免不必要的资源浪费。而工厂模式和抽象工厂模式的对比,则让我深刻理解了代码解耦的艺术,如何将对象的创建过程与使用过程分离,从而提高代码的可维护性和扩展性。更让我惊喜的是,作者并没有止步于理论的阐述,而是大量地结合了实际的开发场景,用通俗易懂的语言和精炼的代码示例,将抽象的设计原则落地。读完关于模块模式的章节,我感觉自己之前写的那些“面条式”代码简直不堪入目。书中讲解的AMD、CMD、CommonJS等模块化规范,以及ES6的import/export,让我对模块化的理解上升到了一个新的高度,也为我日后编写更清晰、更易于协作的代码打下了坚实的基础。这本书不仅让我学到了“是什么”,更让我懂得了“为什么”和“怎么做”,简直是一场JavaScript知识体系的重塑。
评分不得不说,《JavaScript设计模式与开发实践》这本书,对于我这样一名在前端摸爬滚打多年的开发者来说,简直是一次醍醐灌顶般的体验。在过去的工作中,我常常会遇到一些棘手的代码维护问题,比如修改一个功能牵一发而动全身,或者新增一个模块就得重写大量重复的代码。阅读这本书的过程,就像是在解开一个个程式码中的“死结”,让我恍然大悟,原来很多看似复杂的问题,都可以通过合理的设计模式来优雅地解决。书中的观察者模式,让我深刻理解了事件驱动编程的思想,如何实现组件之间的松耦合,让系统更加灵活。而策略模式的讲解,更是为我打开了新世界的大门,它让我看到了如何将算法或行为封装起来,根据不同的条件动态地选择执行,极大地提升了代码的复用性和可读性。书中大量的代码示例,都是经过精心设计的,简洁明了,能够快速地捕捉到设计模式的核心思想。更重要的是,作者在讲解每个模式时,都会深入剖析其应用场景和解决的问题,让我能够将学到的知识立刻应用到实际项目中,解决我之前遇到的痛点。这本书让我不再是简单地复制代码,而是开始思考代码的结构、可扩展性和可维护性,为我的职业生涯注入了新的活力。
评分这本书给我最大的感受,是一种“豁然开朗”的顿悟。长久以来,我总觉得JavaScript是一门“灵活”的语言,但也因此容易写出难以理解和维护的代码。直到我读了《JavaScript设计模式与开发实践》,才明白这种“灵活”并非是混乱的根源,而是可以通过合理的设计模式来引导和约束的。书中关于代理模式的讲解,让我对“延迟加载”和“访问控制”有了更深刻的理解,也看到了如何在不改变原对象的情况下,为其增加额外的功能。而装饰器模式,则是我之前从未深入思考过的,它提供了一种优雅的方式来动态地扩展对象的功能,而无需修改其原始代码,这对于构建可插拔的系统至关重要。让我印象特别深刻的是,作者在介绍每个模式时,都会用一个具体的、 relatable 的例子来解释,然后才上升到代码层面,这种循序渐进的讲解方式,让那些原本可能枯燥的设计模式变得生动有趣。读完书,我感觉自己对JavaScript的理解,从“能用”提升到了“好用”,再到“善用”。很多之前觉得“理所当然”的代码实现方式,现在都能找到更优化的解决方案。这本书绝对是每一个想要提升JavaScript开发技能的开发者必备的宝藏。
评分这本书给我最直接的改变,就是看待JavaScript代码的角度发生了根本性的转变。我之前总觉得JavaScript是一门“随性”的语言,可以写出各种奇特的代码。但《JavaScript设计模式与开发实践》让我看到了,这种“随性”背后,可以有严谨的结构和优雅的设计。书中对适配器模式的讲解,让我明白了如何连接那些不兼容的接口,让不同的模块能够无缝协作,这在实际项目集成中非常实用。而命令模式,更是让我看到了如何将请求封装成对象,实现请求的撤销和重做,这为我构建更高级的用户交互体验提供了思路。让我非常受益的是,作者不仅讲解了模式本身,还深入分析了每个模式的优缺点,以及在不同场景下的适用性,这让我能够根据实际需求,做出最明智的设计选择,而不是盲目套用。读完这本书,我感觉自己仿佛拥有了一套“设计宝典”,在遇到开发中的难题时,能够从容地从中寻找灵感和解决方案。它不再是一本简单的技术书籍,更像是一位经验丰富的老友,在我迷茫时,指引我走向更成熟、更专业的前端开发之路。
评分《JavaScript设计模式与开发实践》这本书,简直就是为我这样的初级开发者量身定做的“武功秘籍”。在此之前,我写代码很大程度上是凭感觉,遇到问题就尝试各种方法,但往往事倍功半,而且代码写出来后自己都觉得杂乱无章,更别说别人看了。这本书的出现,就像是给我指明了一条清晰的道路。书中对原型链继承和组合继承的详细分析,让我终于摆脱了对JavaScript继承机制的模糊认知,能够更清晰地理解对象之间的关系,并写出更健壮的继承结构。而组合模式,更是让我看到了如何将复杂对象拆分成树形结构,方便统一处理,这对于处理像DOM结构这样的场景非常有帮助。我特别喜欢作者在讲解时,会强调“为什么”要这样做,而不是仅仅给出“怎么做”。这种探究事物本质的讲解方式,让我不仅记住了设计模式,更理解了背后的设计思想,让我能够举一反三,在面对新的问题时,也能尝试去应用合适的设计模式。这本书不仅提升了我的技术能力,更重要的是,它培养了我良好的代码设计习惯,让我对写出高质量的代码充满信心。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有