[笔记一]Essential JavaScript Design Patterns For Beginners
最近在看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相关推荐
- [笔记二]Essential JavaScript Design Patterns For Beginners
[size=large]二. 构造模式[/size] 利用prototype 来构造自己的函数. function Car(model,year,miles){ this.model = model; ...
- [读书笔记]《Hands on Design Patterns with C++》——类,继承,多态,模板
前言 <Hands on Design Patterns with C++>首先这本书不是跟之前的书籍一样只是重点在经典的 23 种"设计模式" 上,这些经典的设计模式 ...
- Distributed Systems笔记-Web Service Design Patterns
CMU 95702 Distributed Systems 笔记.简单介绍 XML-RPC.SOAP.REST 三种 web 服务实现方案以及 RPC.Message.Resource 三种 patt ...
- [读书笔记]《Hands on Design Patterns with C++》—— CRTP
多态是指使用父类可以访问基类的内容,并且基类对子类的内容毫不知情,因为父类已经写了或者被编译了,但是基类可能还没有没编写出来.但是有一个 idiom, Curiously Recurring Temp ...
- 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...
设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns) 目录 · 概述 · Factory · What is the Fact ...
- 架构设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)学习笔记
前言 时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的, ...
- 《Design Patterns Explained》读书笔记
Design Patterns Explained: A New Perspective onObject-Oriented Design 作者:Alan Shalloway, James R. Tr ...
- 翻译:《Pro CSS and HTML Design Patterns》简介、总览和目录
Apress, Pro CSS and HTML Design Patterns, Apr. 2007 <CSS与HTML高级设计模式> 简介: 设计模式在软件编程领域取得了巨大成功.在w ...
- 艾伟_转载:C# Design Patterns (3) - Decorator
Decorator Pattern (装饰模式) 装饰模式可「动态」地给一个对象添加一些额外的职责,提供有别于「继承」的另一种选择.就扩展功能而言,Decorator Pattern 透过 Aggre ...
最新文章
- c/c++十七: 变长参数
- DB2日志传送基础知识简介
- Struts2.0第三章(文件上传、ajax开发、json、Fastjson、Jackson、注解开发)
- python链表排序_链表排序+末尾各种排序
- 浅谈JSP自定义标签实现过程
- Unity DF-GUI 中文输入以及自动换行
- Scrapy爬取天眼查首页热门公司信息,可视化分析这些热门公司
- 手机OA是什么?有何优点?
- 【整理】嵌入式系统的各种常见外设
- vue3 打印插件 vue-print-nb
- java 克隆对象 list_我想动态创建对象,先在List创建空对象,然后使用createEquipment复制,返回List,但是不会写了...
- 《泰囧》票房奇迹:极简主义的胜利
- 安卓新闻客户端(二) JSOUP解析HTML 抓取网页内容
- C语言程序的运行与调试过程
- Android自定义弹窗——右上角悬浮关闭
- Oracle内置SQL函数-分类整理大全
- Co-LncRNA:lncRNA与蛋白编码基因的共表达网络数据库
- Xcode 关闭ARC的方法
- 未转变者服务器可作弊,unturned单人作弊指令
- federa 23 安装 androidSDK6.0