在工作中需要些一些前端的js代码,但写得相对比较简单,一般也就是function之类的,后面也看了代码,但还是不能很好的写出比较清晰的代码,最近在web前端交流群里面下载了一些关于设计模式的视频,看完之后希望整理一下,将设计模式的代码整理出来,便于大家交流学习,也便于自己以后温习。
一、JavaScript设计模式概念
设计模式(Design pattern)是一套被反复使用、思想成熟、经过分类和无数实战设计经验的总结坚壮的。使用设计模式是为了让系统代码可重用、可扩展、可解耦、更容易被人理解且能保证代码可靠性。设计模式使代码开发真正工程化;设计模式使软件工程的基石脉络,如同大厦的结构一样。只有夯实的地基搭好结构,才能盖好坚壮的大楼。也是我们迈向高级开发人员必经的一步。
二、设计模式的发展与在JavaScript中的应用
设计模式运用在程序设计中已经有很多年,它最早被整理在Erich Gamma、Richard Hlem、Palph Johnson和Jhon Vlissides合著的一本书中。现在已经被应用到各种各样的编程语言,最大的魅力在于各种编程语言表现都是一样的,只是语法略有不同。例如把java的实现模式转换到C很容易。
JavaScript是一门特别灵活的语言,早些年被认为是玩具式的语言,只能做一点为网页涂脂抹粉的小差事。项目工程也不是很大,更无从说起设计模式在JavaScript的应用,但随着NodeJs以及html5和web2.0的兴起,JavaScript本身变得越来越受重视。
但很多本该有的东西JavaScript都有,并没有作为正式的部分,这些年来,人们利用自己对计算机编程的思想,利用了很多晦涩的技巧实现了很多JavaScript设计者都未曾预计到的任务,比如各种设计模式的实现,以及面向对象编程等。
三、设计原则
设计模式存在根本原因是为了代码复用,增加可维护性。有如下原则:
【开闭原则】对扩展开发,对修改关闭,ps高考的试卷。解释:试卷一本是符合大多数学生的,已经出好了,但为了检测学生的能力,需要加一些难度高的题目,这时候不能修改现在的试卷,可以在后面增加附加题。
【里氏转换原则】子类继承父类,单独完全可以运行,ps盗版光盘。解释:正版光盘可以播放,盗版刻盘也可以播放。
【依赖倒转原则】引用一个对象,如果这个对象有底层类型,直接引用底层,ps三个和尚打水,直接可从井里打,但是中间把水打出来放到一个桶里。解释:在水井里面打水,不用先把水打到旁边的水缸,然后再从水缸打到木桶拎上山,直接从井里打水到桶里拎上山就可以了。
【合成、聚合复用原则】新的对象应使用一些已有的对象,使之成为新对象的一部分,ps手里有一些相机的零件,而又去买一个新的相机。解释:我手里有一些相机的零件,再买一些零件就可以组装一个相机照相了,没必要再买一个新相机,造成浪费。
【迪米特原则】一个对象应对其他对象有尽可能少的了解,ps现实中的对象。解释:我们对自己的女朋友可以很了解,但是对其他人的女朋友太了解了不好,会出事的哦。
后期,我也会针对一些 常见的设计模式做一系列的讲解。
JavaScript模式设计
JavaScript模式设计之单例模式
JavaScript模式设计之构造函数模式
JavaScript模式设计之建造者模式
JavaScript模式设计之工厂模式
JavaScript模式设计之代理模式
JavaScript模式设计之命令模式