SOLID Principle

SOLID Principle

SOLID Principle

SOLID原则是针对面向对象编程提出的准则,是对面向对象编程中可能引发问题的操作的总结与建议,遵循SOLID原则进行编程,可以大幅度减少紧耦合。

紧耦合:代码中,各种不同的类具有相当强烈的关联关系。一旦改变其中的某一个类,其它所有类都有可能受到牵连

  • 单一责任原则(Single Responsibility Principle)
  • 开闭原则(Open Closed Principle)
  • 里氏替换原则(Liskov Substitution Principle)
  • 接口隔离原则(Interface Segregation Principle)
  • 依赖倒置原则(Dependency Inversion Principle)

单一责任原则(SRP)

什么是SRP

SRP指的是:A class should have only one reason to change

也就是说,每个类应该只负责一个工作或一个目标。

怎么实现SRP

将类中的方法进行划分,相同责任的方法放在一个类

为什么选择SRP

  1. SRP可以让代码可读性提高
  2. SRP可以以让代码更易于管理
  3. 可以减少代码改动带来的风险

开闭原则(OCP)

什么是OCP

1988年,Berteand Meyer首次提出了OCP的概念:

Software entities(classes,modules,functions,etc.)should be open for extension,but closed for modification

OCP指出,软件实体的变化应该通过拓展实现,而不是通过修改已有的代码来实现。

怎么实现OCP

在代码设计中,应该更多的使用抽象类和接口。通过继承抽象类或实现接口,实现功能拓展。

为什么选择OCP

  1. 避免改动原有代码从而使得功能发生错误的风险
  2. 只在需要的地方拓展功能,不需要的地方不需要拓展

里氏替换原则(LSP)

什么是LSP

LSP是OCP的拓展,它指出的具体含义是:Derived or child classes must be substitutable for their base or parent classes

基类作用的地方,一定可以使用其子类进行替代,意味着子类是在实现基类功能的基础上,拓展出新的功能。

怎么实现LSP

实现LSP的方法有:

  • 覆写基类的抽象方法
  • 重写基类实现方法时,应该保证返回值的条件更严格
  • 重载基类实现方法时,应该保证传递的参数条件更加宽松

简单来说就是,子类返回值为基类返回值的子集,而基类的参数则是子类参数的子集

为什么选择LSP

  1. LSP可以避免使用多态导致功能缺失
  2. 提高代码的可拓展性
  3. 提高代码的重用性

接口隔离原则(ISP)

什么是ISP

这是一条针对接口,而不是类的设计原则

它的含义是:do not force any client to implement an interface which is irrelevant to them

客户端不应该依赖它不需要的接口。类似于SRP,接口的功能也应该分散,而不应该臃肿。

怎么实现ISP

将接口功能进行划分,抽象出接功能共性,将具有共性的功能放在一个接口中

为什么选择ISP

LSP可以提高客户端的效率

依赖倒置原则(DIP)

什么是DIP

High-level modules should not depend on low-level modules. Both should depend on abstractions

简单来说就是,抽象的不会依赖具体的,而具体的依赖抽象的

怎么实现DIP

  1. 每个类尽量都有接口或抽象类
  2. 变量尽量用接口或抽象类定义
  3. 任何类不从具体类派生

为什么选择DIP

DIP是抽象和具体的依赖关系的体现,可以提高系统的稳定性,提高代码的可维护性和易读性

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沅筱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值