内容简介
本书共有两部分。第一部分给出了实现特定设计模式所需的面向对象特性的基础知识,主要包括接口、封装和信息隐藏、继承、单体模式等内容。第二部分重点介绍了各种具体的设计模式及其在JavaScript语言中的应用,主要介绍了工厂模式、桥接模式、组合模式、门面模式和其他常见模式。为了让每章的例子尽可能贴近实际应用,本书还列出了一些JavaScript程序员最常见的任务,然后使用设计模式使他们的解决方案更加模块化、效率更高,更容易维护,其中更多的理论示例用来说明一些关键点。
本书适合各级Web前端开发者阅读参考,也适合c/Java/C#服务器端程序员学习背景。
目录
- 第一部分面向对象的JavaScript
- 第1章富有表现力的JavaScript
- 1.1JavaScript的灵活性
- 1.2弱类型语言
- 1.3函数是一等对象
- 1.4对象的易变性
- 1.5继承
- 1.6JavaScript中的设计模式
- 1.7小结
- 第2章接口
- 2.1什么是接口
- 2.1.1接口之利
- 2.1.2接口之弊
- 2.2其他面向对象语言处理接口的方式
- 2.3在JavaScript中模仿接口
- 2.3.1用注释描述接口
- 2.3.2用属性检查模仿接口
- 2.3.3用鸭式辨型模仿接口
- 2.4本书采用的接口实现方法
- 2.5Interface类
- 2.5.1Interface类的使用场合
- 2.5.2Interface类的用法
- 2.5.3示例:使用Interface类
- 2.6依赖于接口的设计模式
- 2.7小结
- 第3章封装和信息隐藏
- 3.1信息隐藏原则
- 3.1.1封装与信息隐藏
- 3.1.2接口扮演的角色
- 3.2创建对象的基本模式
- 3.2.1门户大开型对象
- 3.2.2用命名规范区别私用成员
- 3.2.3作用域、嵌套函数和闭包
- 3.2.4用闭包实现私用成员
- 3.3更多高级对象创建模式
- 3.3.1静态方法和属性
- 3.3.2常量
- 3.3.3单体和对象工厂
- 3.4封装之利
- 3.5封装之弊
- 3.6小结
- 第4章继承
- 4.1为什么需要继承
- 4.2类式继承
- 4.2.1原型链
- 4.2.2extend函数
- 4.3原型式继承
- 4.3.1对继承而来的成员的读和写的不对等性
- 4.3.2clone函数
- 4.4类式继承和原型式继承的对比
- 4.5继承与封装
- 4.6掺元类
- 4.7示例:就地编辑
- 4.7.1类式继承解决方案
- 4.7.2原型式继承解决方案
- 4.7.3掺元类解决方案
- 4.8继承的适用场合
- 4.9小结
- 第5章单体模式
- 5.1单体的基本结构
- 5.2划分命名空间
- 5.3用作特定网页专用代码的包装器的单体
- 5.4拥有私用成员的单体
- 5.4.1使用下划线表示法
- 5.4.2使用闭包
- 5.4.3两种技术的比较
- 5.5惰性实例化
- 5.6分支
- 5.7示例:用分支技术创建XHR对象
- 5.8单体模式的适用场合
- 5.9单体模式之利
- 5.10单体模式之弊
- 5.11小结
- 第6章方法的链式调用
- 第二部分设计模式
- 第7章工厂模式
- 第8章桥接模式
- 第9章组合模式
- 第10章门面模式
- 第11章适配器模式
- 第12章装饰者模式
- 第13章享元模式
- 第14章代理模式
- 第15章观察者模式
- 第16章命令模式
- 第17章职责链模式
- 索引
Angular 官方网站上的入门很多,API也很全,但是就是看不明白 Angular的全貌。同样的事情在不同教程里用不同的方法实现,让人感觉又神器又难以捉摸。而本书最出色的地方正是扫清这些迷雾:它不再急于让读者立刻构建出一个有用的App,而是对每一步操作介绍不同的实现方法,以及为什么有这三种写法、适用什么场合——终于一次看清楚它的方方面面了。Angular官方教程里只讲了能做什么如何做,而这本书里介绍了为什么。
另一个出色的地方在于学习的循序渐进方式,第一章画了个小圈,小但完整;第二章画了一个更大的圈,依次类推。每个章节的学习成就感很好,而渐进式的内容安排也非常舒服,Brad完全是写教程的老手(Angular官方API里的一些关键概念介绍应该也是出自Brad)。
基本上看完前两章就能开始进行简单的开发了,ng指令很强大,减少了一些工作量,我的感觉ng精髓在于模块公有服务的封装,这部分还不能掌握得很好,而且有时候过于追求业务逻辑在前端处理,反而忽略了其实某些业务服务端处理起来更简单啊,官方api感觉也不是很友好。不过总体来说ng很酷。