分享
 
 
 

JavaScript设计模式(图灵程序设计丛书)

JavaScript设计模式(图灵程序设计丛书)  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  參考價格: 点此进入淘宝搜索页搜索
  分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,综合,
  品牌: 哈梅斯

基本信息·出版社:人民邮电出版社

·页码:250 页

·出版日期:2009年

·ISBN:711519128X/9787115191281

·条形码:9787115191281

·包装版本:1版

·装帧:平装

·开本:16

·正文语种:中文

·丛书名:图灵程序设计丛书

产品信息有问题吗?请帮我们更新产品信息。

内容简介《JavaScript设计模式》共有两部分。第一部分给出了实现具体设计模式所需要的面向对象特性的基础知识,主要包括接口、封装和信息隐藏、继承、单体模式等内容。第二部分则专注于各种具体的设计模式及其在JavaScript 语言中的应用,主要介绍了工厂模式、桥接模式、组合模式、门面模式等几种常见的模式。为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些JavaScript 程序员最常见的任务,然后运用设计模式使其解决方案变得更模块化、更高效并且更易维护,其中较为理论化的例子则用于阐明某些要点。《JavaScript设计模式》适合各层次的Web 前端开发人员阅读和参考,也适合有C++/Java/C# 背景的服务器端程序员学习。

作者简介Ross Harmes,资深Web程序员,有10多年编程经验。现任Yahoo前端工程师。他是开源图片博客软件Birch的开发者。Blog地址为Http://tecrhfoolery.com。

Dustin Diaz,资深Web程序员,现任Google用户界面工程师。新一代JavaScript框架DEDlChain(兼具jQuery和YUI的优势)的开发者。他还是一位中长跑健将,800米跑曾经在全美国排名第13。拥有西班牙语学士学位。个人网站http://dustindiaz.com。

媒体推荐“本书道前人所未道,引导你从编写代码进化为设计代码。书中绝大部分示例代码都来自YUI等实战项目,并进行了深入剖析。强烈推荐。”

——Nicholas C.Zakas,著名.JavaScript专家,Yarl00前端工程师,畅销书《JavaScript高级程序设计》作者

“毫不夸张地说,这是我有生以来读到的最好的一本JavaScript图书。作者讲授了大量独门的专家经验。”

——Mostafa Farghaly,埃及程序员

编辑推荐《JavaScript设计模式》中,Google和Yahoo公司的两位资深Web专家对此给出了掷地有声的肯定回答。作者针对常见的开发任务,从YUI等实战代码中取材,提供了专家级的解决方案,不仅透彻剖析了JavaScript扣的面向对象编程,而且深入探讨了如何用JavaScript实现以前只在服务器端应用的设计模式,如何根据实际场景选择恰当的设计模式,开发出高质量的企业级代码。《JavaScript设计模式》充分证明:JavaScript不仅毫不逊色于其他高级语言,已经是一种成熟且强大的面向对象语言,而且还拥有Java和C++等语言不具备的面向未来的特性,因此更加灵活、更富于表现力。

Web应用取代桌面程序的时代已经到来!作为Web前端的核心技术,JavaScript的重要性不言而喻,它有望成为下一代统治性程序语言。但由于业界长期的误解和滥用,也有不少人仍然对此半信半疑。那么,JavaScript到底能否当此大任呢?无论是前端工程师,还是服务器端程序员,通过《JavaScript设计模式》都将使自己的JavaScript功力提升到前所未有的高度。

目录

第一部分 面向对象的JavaScript

第1章 富有表现力的JavaScript

1.1 JavaScript的灵活性

1.2 弱类型语言

1.3 函数是一等对象

1.4 对象的易变性

1.5 继承

1.6 JavaScript中的设计模式

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.5 Interface类

2.5.1 Interface类的使用场合

2.5.2 Interface类的用法

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.2 extend函数

4.3 原型式继承

4.3.1 对继承而来的成员的读和写的不对等性

4.3.2 clone函数

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章 方法的链式调用

6.1 调用链的结构

6.2 设计一个支持方法链式调用的JavaScript库

6.3 使用回调从支持链式调用的方法获取数据

6.4 小结

第二部分 设计模式

第7章 工厂模式

7.1 简单工厂

7.2 工厂模式

7.3 工厂模式的适用场合

7.3.1 动态实现

7.3.2 节省设置开销

7.3.3 用许多小型对象组成一个大对象

7.4 示例:XHR工厂

7.4.1 专用型连接对象

7.4.2 在运行时选择连接对象

7.5 示例:RSS阅读器

7.6 工厂模式之利

7.7 工厂模式之弊

7.8 小结

第8章 桥接模式

8.1 示例:事件监听器

8.2 桥接模式的其他例子

8.3 用桥接模式联结多个类

8.4 示例:构建XHR连接队列

8.4.1 添加核心工具

8.4.2 添加观察者系统

8.4.3 开发队列的基本框架

8.4.4 实现队列

8.4.5 哪些地方用了桥接模式

8.5 桥接模式的适用场合

8.6 桥接模式之利

8.7 桥接模式之弊

8.8 小结

第9章 组合模式

9.1 组合对象的结构

9.2 使用组合模式

9.3 示例:表单验证

9.3.1 汇合起来

9.3.2 向FormItem添加操作

9.3.3 向层次体系中添加类

9.3.4 添加更多操作

9.4 示例:图片库

9.5 组合模式之利

9.6 组合模式之弊

9.7 小结

第10章 门面模式

10.1 一些你可能已经知道的门面元素

10.2 JavaScript库的门面性质

10.3 用作便利方法的门面元素

10.4 示例:设置HTML元素的样式

10.5 示例:设计一个事件工具

10.6 实现门面模式的一般步骤

10.7 门面模式的适用场合

10.8 门面模式之利

10.9 门面模式之弊

10.10 小结

第11章 适配器模式

11.1 适配器的特点

11.2 适配原有实现

11.3 示例:适配两个库

11.4 示例:适配电子邮件API

11.4.1 用适配器包装Web邮件API

11.4.2 从fooMail转向dedMail

11.5 适配器模式的适用场合

11.6 适配器模式之利

11.7 适配器模式之弊

11.8 小结

第12章 装饰者模式

12.1 装饰者的结构

12.1.1 接口在装饰者模式中的角色

12.1.2 装饰者模式与组合模式的比较

12.2 装饰者修改其组件的方式

12.2.1 在方法之后添加行为

12.2.2 在方法之前添加行为

12.2.3 替换方法

12.2.4 添加新方法

12.3 工厂的角色

12.4 函数装饰者

12.5 装饰者模式的适用场合

12.6 示例:方法性能分析器

12.7 装饰者模式之利

12.8 装饰者模式之弊

12.9 小结

第13章 享元模式

13.1 享元的结构

13.2 示例:汽车登记

13.2.1 内在状态和外在状态

13.2.2 用工厂进行实例化

13.2.3 封装在管理器中的外在状态

13.3 管理外在状态

13.4 示例:Web日历

13.4.1 把日期对象转化为享元

13.4.2 外在数据保存在哪里

13.5 示例:工具提示对象

13.5.1 未经优化的Tooltip类

13.5.2 作为享元的Tooltip

13.6 保存实例供以后重用

13.7 享元模式的适用场合

13.8 实现享元模式的一般步骤

13.9 享元模式之利

13.10 享元模式之弊

13.11 小结

第14章 代理模式

14.1 代理的结构

14.1.1 代理如何控制对本体的访问

14.1.2 虚拟代理、远程代理和保护代理

14.1.3 代理模式与装饰者模式的比较

14.2 代理模式的适用场合

14.3 示例:网页统计

14.4 包装Web服务的通用模式

14.5 示例:目录查找

14.6 创建虚拟代理的通用模式

14.7 代理模式之利

14.8 代理模式之弊

14.9 小结

第15章 观察者模式

15.1 示例:报纸的投送

15.1.1 推与拉的比较

15.1.2 模式的实践

15.2 构建观察者API

15.2.1 投送方法

15.2.2 订阅方法

15.2.3 退订方法

15.3 现实生活中的观察者

15.4 示例:动画

15.5 事件监听器也是观察者

15.6 观察者模式的适用场合

15.7 观察者模式之利

15.8 观察者模式之弊

15.9 小结

第16章 命令模式

16.1 命令的结构

16.1.1 用闭包创建命令对象

16.1.2 客户、调用者和接收者

16.1.3 在命令模式中使用接口

16.2 命令对象的类型

16.3 示例:菜单项

16.3.1 菜单组合对象

16.3.2 命令类

16.3.3 汇合起来

16.3.4 添加更多菜单项

16.4 示例:取消操作和命令日志

16.4.1 使用命令日志实现不可逆操作的取消

16.4.2 用于崩溃恢复的命令日志

16.5 命令模式的适用场合

16.6 命令模式之利

16.7 命令模式之弊

16.8 小结

第17章 职责链模式

17.1 职责链的结构

17.2 传递请求

17.3 在现有层次体系中实现职责链

17.4 事件委托

17.5 职责链模式的适用场合

17.6 图片库的进一步讨论

17.6.1 用职责链提高组合对象的效率

17.6.2 为图片添加标签

17.7 职责链模式之利

17.8 职责链模式之弊

17.9 小结

索引

……[看更多目录]

序言设计模式对于程序员来说并不是一个陌生话题。在Erich Gamma等人合著的经典著作《设计模式》出版之后,十几年间陆续出现了许多这方面的专著。不过它们大都结合Java和C++等传统的面向对象语言进行讲解,而讲述设计模式在动态语言中的实现的书则较为罕见。在早期的JavaScript编程实践中,这种语言只被用于做点为网页涂脂抹粉的小差事;程序的规模很小,也很简单。那个时候恐怕没有人会想到把设计模式用到这种“玩具语言”编写的程序中。随着Ajax技术的兴起,Web)应用的许多逻辑都从服务器端转移到客户端执行,客户端JavaScript程序的作用越来越重要,其规模和复杂程度也越来越大,人们也越来越多地把面向对象方法应用到JavaScript程序设计中。在此背景下,有许多人开始研究设计模式在JavaScript程序设计中的应用,网上也陆续出现了一些关于这个话题的零星讨论。但是到目前为止,系统地探讨面向对象的程序设计模式在JavaScript语言中的实现的书,只此一本。(Michael Mahemof所著的《Ajax设计模式》一书总结的是运用Aiax技术开发Web应用的各种设计模式,虽然也涉及大量JavaScript编程,但它与本书关注的焦点不同。本书讨论的是一些通用的面向对象设计模式在JavaScript中的实现,属于更基础性的东西,它们不仅仅适用于Web客户端编程。)

JavaScript这种语言与Java等传统的面向对象语言有很大的不同。它的动态性、词法作用域和基于原型的继承机制等特点可能会让很多初次接触它的程序员都有点不习惯,而且由于语言设计上的一些不完善,许多在传统面向对象语言中只是举手之劳的事在JavaScript却不得不依靠hack手法来实现。这也许就是那些已经熟知设计模式在Java等语言中实现方式的程序员也需要本书的原因。本书第一部分着重讲述了面向对象技术在JavaScript中的实现方法。这对于对JavaScript只有过初步了解的人非常有用(当然,本书不适合对JavaScript一窍不通的读者。他们应该先找一本,JavaScript基础教材来看看,比如人民邮电出版社出版的《JavaScript基础教程》)。Java和C++编程老手们在学完这部分内容之后,想必应该能够在JavaScript程序设计中自行应用各种经典的设计模式了。不过不同的人可能会有一些不同的做法,因此继续看看本书第二部分,借鉴一下作者的方法也不无益处。对于那些从未学过设计模式的JavaScript程序员来说,本书的重要性更是毋庸置疑。不过,坦率地说,要想深入学习设计模式仅看本书是不够的。取代Gamma等人的《设计模式》并不是本书的目标。

文摘在事件驱动的环境中,比如浏览器这种持续寻求用户关注的环境中,观察者模式〔又名发布者—订阅者(publisher-subscriber)模式〕是一种管理人与其任务之间的关系(确切地讲,是对象及其行为和状态之间的关系)的得力工具。用JavaScript的话来说,这种模式的实质就是你可以对程序中某个对象的状态进行观察,并且在其发生改变时能够得到通知。

观察者模式中存在两个角色:观察者和被观察者。本书一般倾向于称其为发布者和订阅者。这种模式在JavaScript中有几种不同的实现方式,本章将对其中的一些实现方式进行考察。不过我们首先要说明一下发布者和订阅者这两种角色。下一节的例子以报业为例说明了观察者模式的工作方式。

15.1示例:报纸的投送

在报纸行业中,发行和订阅的顺利进行有赖于一些关键性的角色和行为。首先是读者。他们都是订阅者(subscriber),是与你我一样的人。我们消费数据并且根据读到的消息做出反应。我们可以选择自己的居住地点,让报社把报纸送到自己家中。这个活动中的另一个角色是发行方(publisher)。他们负责出版诸如San Francisco Chronicle、New York Times和Sacramento Bee这样的报纸。

确定了各方的身份之后,我们就可以分析每一方的职责所在。作为报纸的订阅者,我们有一些事要做。数据到来的时候我们收到通知。我们消费数据。然后我们根据数据做出反应。只要报纸到了订阅者手中,他们就可以自行处置。有些人读完之后会将其扔在一边,有些人会向朋友或家人转述其中的新闻,甚至还有一些人会把报纸送回去。总而言之,订阅者要从发行方接收数据。

发行方则要发送数据。在本例中,发行方也是投送方(deliver)。一般说来,一个发行方很可能有许多订阅者,同样,一个订阅者也很可能会订阅多家报社的报纸。问题的关键在于,这是一种多对多的关系,需要一种高级的抽象策略,以便订阅者能够彼此独立地发生改变,而发行方能够接受任何有消费意向的订阅者。

15.1.1推与拉的比较

对于报社来说,只为给几个订阅者投送报纸就满世界跑是不划算的。而纽约市的居民也不可能特意飞到旧金山去拿自己订的San Francisco Chronicle,要知道这份报纸可以直接投送到他们家门口。

订阅者要想拿到报纸的话有两种投送方式可选:推或拉。在推环境中,发行方很可能会雇佣投送人员四处送报。换句话说,他们把自己的报纸推出去,让订阅者收取。在拉环境中,规模较小的本地报社可能会在订阅者家附近的街角提供自己的数据,

……[看更多书摘]

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
>>返回首頁<<
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有