最近在学习JavaScript
设计模式,对于刚刚起步的小白来讲,对有些东西仍是很模糊的,因此整理成书面的形式,以避免之后忘记,能够反复的看一下。程序员
什么是设计模式?
模式是一种可复用的解决方案,可用于解决项目开发设计中遇到的常见问题,比较咱们在编写JavaScript
应用程序的实例中。咱们定义一个模板,这个模板能够对应多种状况,设计模式也是如此。可是, 你不能像使用现成的函数或程序库那样, 拿来某个模式就将其套用到本身的程序中。 模式并非一段特定的代码, 而是用于解决特定问题的通常性概念。面试
大部分模式都有正规的描述方式, 以便在不一样状况下使用。 模式的描述一般会包括如下部分:算法
部分模式介绍中还列出其余的一些实用细节,例如模式的适用性、实现步骤以及与其余模式的关系。编程
设计模式类别
设计模式以类型划分主要分为三大类型,创造型设计模式、结构型设计模式、行为设计模式,三种类型设计模式中又包含了更多的是设计模式。设计模式
1、创造型设计模式框架
建立型设计模式是一类处理对象建立的设计模式,经过某种方式控制对象的建立来避免基本对象建立时致使设计上的问题或增长设计上的复杂度。编程语言
创造模式包括:函数
2、结构型设计模式工具
结构型模式与对象组合有关,一般能够用户找出在不一样对象之间创建关系的简单方法。这种模式有助于确保在程序某一部分发生变化时,系统的整个结构无需同时改变,同时对于不适合因某一特定目的而改变的系统部分,这种模式也可以帮助它们完成重组。学习
创造模式包括:
3、行为设计模式
行为模式专一于改善或者简化系统中不一样对象之间的通讯。
行为模式包括:
注
超类:被继承的类通常称为“超类”,也有叫作父类。是继承中很是重要的概念,它和子类一块儿形象地描述了继承的层次关系。超类设计的好与很差,首先看其内部重用率的高低,内部重用率高,必然外部重用率也高。
设计模式有什么好处
既然学习设计模式,固然也会对咱们的工做,带来不少好处,不然设计模式存在的价值也就不复存在了。设计模式不光带给咱们的并不仅是良好的编码规范,其中最重要的多是思想。
升值加薪
几乎全部关于编程的工做面试和考核中都会有关于模式的问题。了解这些知识可以帮助你发现更普遍的工做机会, 或者实现升职加薪的工做目标。
加强代码质量
模式能让你对已有的解决方案进行自定义, 而不用彻底自行开发。 代码中的错误将更少, 由于你使用的是通过证实的标准解决方案, 它考虑了全部隐藏的问题。
利于团队协做
设计模式定义了一种让你和团队成员可以更高效沟通的通用语言。你只需将模式的名称告诉给程序员,而不须要长篇累牍地解释本身那绝妙的设计思想以及其中各个类的做用。 不费吹灰之力就能搞定同事之间的沟通。你只需说“哦,这里用单例就能够了”,全部人都会理解这条建议背后的想法。只要知晓模式及其名称,你就无需解释什么是单例。
更快的解决问题
设计模式是针对软件设计中常见问题的工具箱,其中的工具就是各类通过实践验证的解决方案。 即便你从未遇到过这些问题,了解模式仍然很是有用,由于它能指导你如何使用面向对象的设计原则来解决各类问题。
反模式
反模式是软件开发中被认为是坏编程实践的某些模式。用来解决共性问题从而带来得不良的解决方案。与设计模式不一样的是,设计模式是解决常见问题的经常使用方法,这些常见问题已经正式化,一般被认为是一种良好的开发实践,而反模式则是相反的,是不可取的。
有人认为反模式是因为将一般使用的设计模式用在了错误的地方,也有人认为反模式只是一种坏习惯。简单的来讲,反模式是指在对常常面对的问题常用的低效,不良,或者有待优化的设计模式/方法。甚至,反模式也能够是一种错误的开发思想/理念。
反模式的流行背后都存在颇有说服力的缘由,但反模式对可维护性和软件的长期发展有着更为严重的影响。 按照技术债务的说法,每次选择捷径都会产生隐含的代价,而这些代价在未来的某一时刻总要偿还。 那些推迟的重构不只会影响下一次变动,并且会像经济债务同样持续地叠加利息。
总结
本文主要对设计模式作了一些简单的认识和了解,接下来的一段时间笔者会不定时更新,上述所说的23
种设计模式。接下来的时间咱们就一块儿学习设计模式吧。
在学习过程当中不要太纠结于代码,学会并理解其中的思想便可,熟练掌握并能运用其种思想在实际开发的项目中,你会发现本身成长了很大一截。