最近在看Essential JavaScript Design Patterns For Beginners
原文地址:http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/
自己做了点笔记;摘录如下

1、一个设计模式必要的部分:
(1)名称和描述Pattern Name and description
(2)内容提示 context outline——是对用户哪方面需求的响应
(3)问题陈述——正在解决的问题的声明,让别人能够理解模式的意图
(4)解决方案——用户的问题是如何得到解决的,给出一个可理解的列表,包括步骤和想法
(5)设计方案——模式设计的描述,特别要说明关于用户交互的行为描述
(6)实现——模式如何实施的指南
(7)插图——模式中类的可视化描述
(8)例子——用最简单的形式实现的例子
(9)必要条件 ——支持该模式所需的其他模式
(10)关系——这个模式与什么模式类似??它模仿了其他的模式吗?
(11)已知的使用——这个模式已经在被别人使用了吗?如果是,在哪里?是怎样使用的?
(12)讨论——团队和作者对这个模式的想法

2、需要花费一定时间来吸收一些不同的设计模式,并吸取对你有意义的部分 - 这将帮助你实现自己的目标。——学习已有的设计模式(也就是要膜拜大牛~!)

3、构建自己的设计模式的一些提示:
(1)在头脑中确定它的实用性——确保你的模式是解决反复出现的问题而不是临时的解决方案
(2)确保你借鉴了最佳的做法——你所做的设计应该基于那些你从最佳实践中理解的原则
(3)你的设计模式应该对用户透明——设计模式应该是对任何类型的用户完全透明的。
(4)记住!独创性在设计模式中不是最关键的——当在写自己的模式的时候,你不必采用独创的解决方法,也不必担心与其他模式中一些小部件的重合。只要你的模式足够强大,得到了广泛的运用,就有机会被作为是一个适当的模式
(5)了解模式与设计之间的差异——一个设计模式一般来自于被验证了的最佳实践,作为设计师解决问题的模型。模式的作用是给提供设计师指导,使设计师有 更好的设计选择来满足用户的需求。
(6)需要有很多的示例——一个好的模式描述同样需要强大的例子来证明它的成功运用。要显示广泛的应用,理想的例子可以表现出好的设计原则。

4、反模式是一种不好的设计,在JavaScript中有以下几种反模式:
(1)定义大量的全局变量污染命名空间
(2)传递字符串而不是函数,导致setTimeOut()和setInterval都将触发内部使用eval()
(3) Prototyping against the Object object (this is a particularly bad anti-pattern)??对象的反原型?(这是一种恶劣的反模式)
(4)使用内联形式的JavaScript
(5)使用document.write,而document.createElement是比较合适的替代品。document.write已经滥用了多年,有很多缺点,包括如果它在页面加载以后使用,实际上它可以覆盖你的页面,而document.createElement则不会。你可以在http://jsfiddle.net/addyosmani/6T9vX/ 这里看到活生生的例子。另外它 在XHTML中不能使用也是建议使用document.createElement的原因。备注:http://jsfiddle.net/ 这个貌似不错啊。。可以测试很多js。。。

5、几种模式的简单说明
(1)创建型模式:对象创建的基本方法可能会导致在一个项目中增加复杂性,可以通过创建一些模式来解决这个问题,这些创建型模式有:factory(工厂),abstract(抽象),prototype(原型),singleton(单体)和builder(建造者)
(2)结构型模式:此类模式的重点是类和对象的组成结构。结构性的’class’的创建模式使用继承来写接口,’object’模式定义方法创建对象获得新的功能。有:Decorator(装饰者), Façade(外观), Composite(组合), Adapter(适配) and Bridge(桥接)
(3)行为模式:此类模式的焦点在于类中对象之间的通信。它们的目的就是对了更灵活的实现通信的功能。包括:Iterator(迭代), Mediator(调解), Observer(观察) and Visitor(访问).

一、 创建模式
这是其他模式的基础,而且也是很容易理解的。创建模式就是处理应用中创建对象的。在JavaScript中,传统的创建对象的方式(名/值对的集合)如下:

var newObject = new Object();var newObject = {};

newObject['someValue'] = 'Hello World';

(注:良好的写法是var newObject = {}; 对象直接量的写法。)

[笔记一]Essential JavaScript Design Patterns For Beginners相关推荐

  1. [笔记二]Essential JavaScript Design Patterns For Beginners

    [size=large]二. 构造模式[/size] 利用prototype 来构造自己的函数. function Car(model,year,miles){ this.model = model; ...

  2. [读书笔记]《Hands on Design Patterns with C++》——类,继承,多态,模板

    前言 <Hands on Design Patterns with C++>首先这本书不是跟之前的书籍一样只是重点在经典的 23 种"设计模式" 上,这些经典的设计模式 ...

  3. Distributed Systems笔记-Web Service Design Patterns

    CMU 95702 Distributed Systems 笔记.简单介绍 XML-RPC.SOAP.REST 三种 web 服务实现方案以及 RPC.Message.Resource 三种 patt ...

  4. [读书笔记]《Hands on Design Patterns with C++》—— CRTP

    多态是指使用父类可以访问基类的内容,并且基类对子类的内容毫不知情,因为父类已经写了或者被编译了,但是基类可能还没有没编写出来.但是有一个 idiom, Curiously Recurring Temp ...

  5. 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...

    设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns) 目录 · 概述 · Factory · What is the Fact ...

  6. 架构设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)学习笔记

    前言   时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的, ...

  7. 《Design Patterns Explained》读书笔记

    Design Patterns Explained: A New Perspective onObject-Oriented Design 作者:Alan Shalloway, James R. Tr ...

  8. 翻译:《Pro CSS and HTML Design Patterns》简介、总览和目录

    Apress, Pro CSS and HTML Design Patterns, Apr. 2007 <CSS与HTML高级设计模式> 简介: 设计模式在软件编程领域取得了巨大成功.在w ...

  9. 艾伟_转载:C# Design Patterns (3) - Decorator

    Decorator Pattern (装饰模式) 装饰模式可「动态」地给一个对象添加一些额外的职责,提供有别于「继承」的另一种选择.就扩展功能而言,Decorator Pattern 透过 Aggre ...

最新文章

  1. c/c++十七: 变长参数
  2. DB2日志传送基础知识简介
  3. Struts2.0第三章(文件上传、ajax开发、json、Fastjson、Jackson、注解开发)
  4. python链表排序_链表排序+末尾各种排序
  5. 浅谈JSP自定义标签实现过程
  6. Unity DF-GUI 中文输入以及自动换行
  7. Scrapy爬取天眼查首页热门公司信息,可视化分析这些热门公司
  8. 手机OA是什么?有何优点?
  9. 【整理】嵌入式系统的各种常见外设
  10. vue3 打印插件 vue-print-nb
  11. java 克隆对象 list_我想动态创建对象,先在List创建空对象,然后使用createEquipment复制,返回List,但是不会写了...
  12. 《泰囧》票房奇迹:极简主义的胜利
  13. 安卓新闻客户端(二) JSOUP解析HTML 抓取网页内容
  14. C语言程序的运行与调试过程
  15. Android自定义弹窗——右上角悬浮关闭
  16. Oracle内置SQL函数-分类整理大全
  17. Co-LncRNA:lncRNA与蛋白编码基因的共表达网络数据库
  18. Xcode 关闭ARC的方法
  19. 未转变者服务器可作弊,unturned单人作弊指令
  20. federa 23 安装 androidSDK6.0

热门文章

  1. poj 1322 Chocolate (概率dp)
  2. Mac突然连不上WiFi
  3. js 字符串编码与解码
  4. 51nod1079中国剩余定理
  5. 阿里巴巴卖空阿里巴巴入股新浪微博抑制投资者卖空行为
  6. 深入理解 Laravel 管道
  7. 聊聊spring cloud gateway的SetStatusGatewayFilter
  8. MyEclipse代码提示快捷键和常用设置
  9. OpenCV中矩阵的归一化
  10. 谈谈MVC项目中的缓存功能设计的相关问题