js设计模式之SOLID原则

SOLID原则是面向对象设计的五条原则,由著名的计算机科学家 Robert C·Martin ( 著名的Bob大叔 ) 由 2000 年在他的论文中提出,目的是:创建可多人协作的、易于理解的、易读的以及可测试的代码,这五条原则分别是:
1.S: 单一职责原则
2.O: 开闭原则
3.L: 里氏替换原则
4.I: 接口隔离原则
5.D:依赖倒置原则

在介绍SOLID原则之前,先介绍高内聚低耦合
高内聚低耦合,是软件工程中非常重要的概念,也是判断软件设计好坏的白标准。高内聚就是,尽可能类的每个成员方法只完成一件事,最大限度的聚合;低耦合就是,减少类内部一个成员方法调用另一个成员方法

一、单一职责原则

1.一个对象(方法)只做一件事,这个原则需要用到的场景不是非常多,主要运用在对象和方法级别上,目的是为了,通过解耦让每一个模块职责更加独立,在很多设计模式都有应用,比如单例模式
2.特别注意,并不是所有的职责都应一一分离,如果随着需求变化,两个职责总是同时变化,就不必分离,比如ajax请求,创建xhr对象和发送xhr请求是在一起的,就不用分开了
3.优点: 降低了单个类或者对象的复杂度,按照职责把对象拆分为更小的粒度了,有助于代码复用;当一个职责变更时,不会影响到其他职责
4.缺点: 增加写代码的复杂度,也增加了这些对象互相联系的难度

二、开闭原则

1.经典定义,对扩展开放,对修改关闭
2.通过开闭原则,通过接口或者抽象类为实体定义一个稳定的抽象层,二可变的因素都封装在具体的实现类中,所以,当软件变化时,只需重新派生出一个实现类来扩展
3.优点: 由于是扩展设计,所以原有功能保持不变,只需测试扩展的部分;可复用性较大
4.缺点: 容易导致过度设计

三、里氏替换原则

程序中任何父类对象出现的地方,都可以用其子类对象来替换,并且可以保证原有程序的逻辑行为和正确性
1.里氏替换原则是针对继承而言的,如果继承是为了实现代码重用,那么共享的父类方法就应该保持不变,子类不去修改父类方法只是扩展,父类和子类都可以实例化,这个时候用子类对象将父类对象替换掉是没有问题的;如果继承的目的是为了多态,多态的前提就是子类覆盖并重新定义父类的方法,此时就会出现问题
2.优点: 合理利用继承关系,提高代码复用性,但也增强了类与类之间的耦合性
3.缺点: 约束子类的行为,减低系统灵活性

四、接口隔离原则

不应该强迫客户依赖他们不用的方法,接口隔离原则与单一职责优点类似,都是聚集功能职责的,接口隔离原则可以被理解成具有单一职责的程序转化到一个具有公共接口的对象
1.优点: 将臃肿庞大的接口分解为多个粒度小的接口,可以预防外来变更的扩散;接口隔离提高了系统内聚性,降低系统耦合性
2.缺点: 如果粒度定义过小,会造成接口数量过多,使设计复杂化

五、依赖倒置原则

高级模块不应该依赖于低级模块,都应依赖于抽象;抽象不应依赖于实现,实现应当依赖于抽象
1.优点: 降低类间的耦合性;提高系统稳定性
2.缺点: 增加一层抽象,实现难度增加

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值