设计模式-javascript实现【设计原则】
1. 单一职责原则(SRP原则)
单一职责原则的职责被定义为“引起变化的原因”。如果我们有两个动机去改写一个方法,那么这个方法就具有
两个职责。每个职责都是变化的一个轴线,如果一个方法承担了过多的职责,那么在需求变迁过程中,需要改
写这个方法的可能性就越大。
因此,SRP原则体现为:一个对象(方法)只做一件事情。
优点:SRP原则的优点是降低了单个类或者对象的复杂度,按照职责把对象分解成更小的粒度,这有助于代码的
复用,也有利于进行单元测试。当一个职责需要变更的时候,不会影响到其他的职责。
缺点:增加编写代码的复杂度,当我们按照职责把对象分解成更小的粒度之后,实际上也增大了这些对象之间
相互联系的难度。
体现SRP原则的设计模式:代理模式,迭代器模式,单例模式,装饰者模式
2. 最少知识原则(迪米特法则)
最少知识原则说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这里的软件实体是一个广义的
概念,不仅包括对象,还包括系统,类,模块,函数,变量等。
体现最少知识原则的设计模式:中介者模式,外观模式。
3. 开放-封闭原则
软件实体(类,模块,函数)等应该是可以扩展的,但是不可修改。当需要改变一个程序的功能或者给这个程序
增加新功能的时候,可以使用增加代码的方式,但是不允许改动程序的源代码。
编写遵守开放-封闭原则最明显的方式就是找出程序中将要发生变化的地方,然后把变化封装起来:
- 利用对象的多态性消除条件分支
- 放置挂钩
- 使用回调函数
开放-封闭原则是编写一个好程序的目标,其他设计原则都是达到这个目标的过程。
体现开放封闭原则的设计模式:发布-订阅模式, 模版方法模式,策略模式,代理模式,职责链模式。