设计模式是在软件开发中,经过验证的,用于解决在特定环境下,重复出现的特定的问题的解决方案。
在编写JS代码的过程中,运用一定的设计模式可以让我们的代码更加优雅、灵活。
每个设计模式的构成如下:
1、模式名称:模式的一个好记的名字
2、环境和问题:描述在什么环境下,出现什么特定的问题
3、解决方案:描述如何解决问题
4、效果:描述应用模式后的效果,以及可能带来的问题
简单地说,模式就是一些经验,一套场景/问题+解决方案。
为什么要学习设计模式?
设计模式的种类较多,各个模式都有它对应的场景,不能武断地认为某个模式就是最优解决方案。
通过学习这些设计模式,让你找到“封装变化”、“松耦合”、“针对接口编程”的感觉,从而设计出易维护、易复用、扩展性好、灵活性足的程序。
通过学习设计模式让你领悟面向对象编程的思想(SOLID),到最后就可以抛弃设计模式。
把这些思想应用在你的代码中,写出高内聚、低耦合、可扩展、易维护的代码了。
此时已然是心中无设计模式,而处处是设计模式了。
这就是学习设计模式的目的。
常见的几种设计模式
1、单例模式
之所以叫做单例模式是因为它限定对于一个类,它他只允许有一个实例化对象。
经典的实现方式是,创建一个类,这个类包含一个方法,这个方法在没有对象存在的情况下,将会创建一个新的实例对象。
如果对象存在,这个方法只是返回这个对象的引用。
2、适配器模式
将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口。
适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一起工作。
3、观察者模式
一个或者更多的观察者对一个被观察者的状态感兴趣,将自身的这种兴趣通过附着自身的方式注册在被观察者身上。
当被观察者发生变化,而这种便可也是观察者所关心的,就会产生一个通知,这个通知将会被送出去,最后将会调用每个观察者的更新方法。
当观察者不在对被观察者的状态感兴趣的时候,它们只需要简单的将自身剥离即可。
4、代理模式
把一个对象的访问交给另一个对象来操作。
为了保证当前对象的单一职责,而需要创建另一个对象来处理调用当前对象之前的一些逻辑以提高代码的效率,状态判断等。
模式并不是我们要追求的目标,我们的目标是写出有生气的代码,以有生气的代码为目标去写,你会发现有一些模式会自然而地出现在你的代码中。
这才是模式该用到的时候。
而且随 着你经验的增加,你会发现有一些新的模式自然产生,它与你用的语言,与你的所开发的应用,甚至与你的性格、信仰都有关系。
这时就你超越了大牛,拥有了你自己的模式语言,写出了具备无名特质的代码,踏上了属于你自己的编程永恒之道……