一、设计模式概念解读

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、无数实战代码设计经验的总结。使用设计模式是为了让系统代码可重用、可扩展、可解耦、更容易被人理解且能保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。只有夯实地基搭好结构,才能盖好坚壮的大楼。也是我们迈向高级开发人员必经的一步。

二、设计模式的发展与在 JavaScript 中的应用

设计模式运用在程序设计中已经很多年了,它最早被整理在Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides (绰号四人帮 the Gang of Four ,简称GOF)合著的一本书《Design Patterns: Elements of Reusable Object-Oriented Software》(被称为设计模式的圣经)(而学习JavaScript的圣经是《JavaScript的高级程序设计》)中。现在已经被应用到各种各样的编程语言,最大的魅力在于在各种编程语言中表现都是一样的,只是语法略有不同。例如把Java的实现模式转换到C很容易,但是转换到JavaScript就稍费一些力气了。

JavaScript是一门特别灵活的语言,早些年被认为是玩具式的语言,只能做一点为网页涂脂抹粉的小差事。项目工程也不是很大,更无从说起设计模式在JavaScript的应用,但随着Nodejs以及html5和web2.0的兴起,JavaScript本身变得越来越受重视。   到那会很多本该有的东西JavaScript都有,并没有作为正式的部分。这些年来人们利用自己对计算机编程的思想。利用了很多灰色的技巧实现了很多JavaScript设计者都未曾预计到的任务,比如各种设计模式的实现,以及面向对象编程等。

三、设计原则  (详情参见:程序设计7大面向对象设计原则

设计模式存在根本原因是为了代码复用,增加可维护性。有如下原则:

1.【开闭原则】对扩展开放,对修改关闭。eg.高考的试卷附加题(区分选拔人才,不能临时加,制作纸卷的时候就添加下去。)

2.【里氏转换原则】子类继承父类,单独掉完全可以运行。eg.盗版光盘(复制了原版的内容)

3.【依赖倒转原则】引用一个对象,如果这个对象有底层类型,直接引用底层。eg.三个和尚打水,直接可从井里打到小桶里,然后背回家,不需要一个大桶。但是如果中间把水打出来放到一个桶里,再由这个大桶背回家的话就不值得了。

4.【接口隔离原则】每一个接口应该是一种角色。eg.汽车USB插口。(只负责自己的职责)

5.【合成/聚合复用原则】新的对象应使用一些已有的对象,使之成为新对象的一部分。eg.手里有一些相机的零件,而又去买了一个新的相机。

6.【迪米特原则】一个对象应对其他对象有尽可能少的了解。eg.现实中的对象(只对自己的对象了解。)

JavaScript 设计模式之简介的更多相关文章

  1. JavaScript设计模式

    -->面向对象中的23种设计模式简介 最近看了一本书,推荐给大家<JavaScript设计模式与开发实践>图灵出版社的,讲的非常棒! 详细讲解了js开发中常用的14种设计模式,有很多 ...

  2. javascript设计模式:构造器模式学习一

    javascript 设计模式1.简介javascript是一种弱类型语言,不过类可以通过函数模拟出来最常见的实现方法如下:function Car(model){ this.model = mode ...

  3. JavaScript设计模式经典-面向对象中六大原则

    作者 | Jeskson来源 | 达达前端小酒馆 1 主要学习JavaScript中的六大原则.那么六大原则还记得是什么了吗?六大原则指:单一职责原则(SRP),开放封闭原则(OCP),里氏替换原则( ...

  4. 《JavaScript设计模式 张》整理

    最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单 ...

  5. 《JavaScript设计模式与开发实践》整理

    最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...

  6. Javascript设计模式学习一

    学习Javascript设计模式之前,需要先了解一些相关知识,面向对象的基础知识.this等重要概念,以及掌握一些函数式编程的技巧. Js多态 多态的思想:实际上是把“做什么”和“谁去做”分离开来.例 ...

  7. javascript设计模式实践之职责链--具有百叶窗切换图片效果的JQuery插件(三)

    在上一篇<javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)>里,通过采用模板方法模式完成了切换效果对象的构建编写. 接下来就是完成各效果对象的调 ...

  8. javascript设计模式实践之模板方法--具有百叶窗切换图片效果的JQuery插件(二)

    在上一篇<javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)>里,通过采用迭代器模式完成了各初始化函数的定义和调用. 接下来就要完成各个切换效果的编 ...

  9. javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)

    类似于幻灯片的切换效果,有时需要在网页中完成一些图片的自动切换效果,比如广告,宣传,产品介绍之类的,那么单纯的切就没意思了,需要在切换的时候通过一些效果使得切换生动些. 比较常用之一的就是窗帘切换了. ...

随机推荐

  1. 【BZOJ】【2741】【FOTILE模拟赛】L

    可持久化Trie+分块 神题……Orz zyf & lyd 首先我们先将整个序列搞个前缀异或和,那么某一段的异或和,就变成了两个数的异或和,所以我们就将询问[某个区间中最大的区间异或和]改变成 ...

  2. GUI程序设计2

    8. 按钮(JButton)使用示例 例14. 按钮使用示例. package GUI; import java.awt.BorderLayout; import java.awt.Container ...

  3. 3D屏保程序:汉诺塔

    学过程序的人一定记得汉诺塔.我们学的第一个程序是HelloWorld,而碰到的第一个坑就是汉诺塔,短短十几行代码,不知花费了多少时间精力去理解.我记得当年的开发环境还是蓝屏的,汉诺塔程序的输出还是一行 ...

  4. HDU 1495 很可乐 (DFS)

    题目链接:很可乐 解析:一个瓶子,容量为s.两个杯子,容量分别为n和m,问最少多少次倾倒才干将一瓶可乐均分为两份. 直接模拟每次的倾倒.然后递归求解. 能够加个预判的条件,要是s是奇数的时候,不管怎样 ...

  5. 为什么好多人说win8不好用?

    2012年8月就開始接触win8了,那时win8已经出来半年了:自从用了win8之后就感觉他比xp.win7桌面更绚丽.我就喜欢绚丽的桌面.至今使用win8已经两年了,可发现身边好多人都说win8不好 ...

  6. LoadRunner 测试 Mysql

    准备文件 1. 下载 MySQL LoadRunner libraries. 下载地址:http://files.cnblogs.com/files/xiaoxitest/MySQL_LoadRunn ...

  7. 【DevOps】为什么我们永远疲于奔命?

    作者:范军 (Frank Fan) 新浪微博:@frankfan7   微信:frankfan7 在[DevOps]谁说大象不能跳舞?一文之后,本文对DevOps的理念作进一步探讨. 最近在读一本书& ...

  8. php之快速入门学习-11(数组排序)

    PHP 数组排序 数组中的元素可以按字母或数字顺序进行降序或升序排列. PHP - 数组排序函数 在本章中,我们将一一介绍下列 PHP 数组排序函数: sort() - 对数组进行升序排列 rsort ...

  9. MySQL双主如何解决主键冲突问题

    搭建了个双主,突然想到如果表设置了自增主键的话,当业务同时向双库中插入一条数据,这时候情况是什么样子的呢? 比如:主库A和主库B上的一个表数据为: 12 'ninhao' .当业务同时写入数据后主库A ...

  10. chrome插件的popup与跨域请求

    chrome插件的popup与跨域请求 tkorays <tkorays@hotmail.com> popup及其它js脚本         在chrome插件开发中,大致有几种类型的js ...