一、单一原则
单一职责原则(SRP:Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。简单地说,就是一个类只做一件事。此原则的核心就是降低耦合性和增强内聚性。
优点:
降低类的复杂性
提高可读性
提高可维护性
降低变更的风险
来源:@望月静້ᮨ໌,td社群 @王雲帆 是这样的,在开发时我们通常都应该将请求打包成独立的文件夹和文件处理,这样的优势在于,如果以后维护可以不需要去寻找每个引用的地方,如果修改内容返回值或添加接口也可以直接在文件中添加,并且归类后也可以方便开发者快速找到对应的接口类别,并且在你如果修改了请求工具的情况下,你只需要将api文件夹中的文件修改即可完成,而不是在业务逻辑中查找请求代码,能节省你开发的时间和以后维护的难度。 对此,我们应该应用 单一职责(Single Responsibility Principle)。这个原则顾名就可以思义,就是一个类应该只负责一个职责,术语叫:仅有一个引起其变化的原因。简单点说:一个类中应该是一组相关性很高的函数及数据的封装,个中含义请自行意会。看起来简单,但是做起来就难了,这可能是六大原则中最难以熟练掌握的一个原则了,它高度依赖程序员的自身素质及业务场景。
好处 1、第一个,如果你的后端是傻逼改了接口地址,你只要在上边改就行了。 2、第二个,你定义(抽象)了请求的接口和返回值,那么如果接口和返回值变了你不用改调用参数,直接改接口定义就行了。 3、第三个,如果你这个接口不要了,文件一删就结束,不用去改业务代码(摊手)。
二、里氏替换原则
里氏替换原则(Liskov Substitution Principle LSP), 任何基类可以出现的地方,子类一定可以出现。(反过来就不行了,子类出现的地方,父类未必能适应。)LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
优点:
代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性
提高代码得重用性
提高代码的可扩展性
提高产品或项目的开放性
缺点:
继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法
降低代码的灵活性,子类必须拥有父类的属性和方法
增强了耦合性,当父类的常量、变量和方法被修改时,必须要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能会带来非常糟糕的结果——大片的代码需要重构
三、依赖倒置原则
高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
抽象不应该依赖于细节。
细节应该依赖于抽象。
简单地说就是面向接口编程、或者说面向抽象编程。抽象指的是接口或者是抽象类,特点是不可以直接被实例化。细节就是实现类、实现接口或继承抽象类而产生的类就是细节,特点是可以被直接实例化。
优点:
可扩展性好
耦合度低
public interface ICar {void Run();void Turn();void Stop();}public class BmwCar:ICar{public void Run (){Console.WriteLine("宝马开始启动了");}public void Turn (){Console.WriteLine("宝马开始转弯了");}public void Stop (){Console.WriteLine("宝马开始停车了");}}public class FordCar:ICar{publicvoidRun(){Console.WriteLine("福特开始启动了");}public void Turn (){Console.WriteLine("福特开始转弯了");}public void Stop (){Console.WriteLine("福特开始停车了");}}public class HondaCar:ICar{publicvoidRun(){Console.WriteLine("本田开始启动了");}public void Turn (){Console.WriteLine("本田开始转弯了");}public void Stop (){Console.WriteLine("本田开始停车了");}}public class AutoSystem {private ICar icar;//创建的时候传入对应的类就好了public AutoSystem(ICar icar) {this.icar = icar;}private void RunCar() {icar.Run();}private void TurnCar() {icar.Turn();}private void StopCar() {icar.Stop();}}
四、开闭原则
对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。
对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。
实现开闭原则的关键就在于“抽象”,即面向抽象编程。
优点:
增加稳定性
可扩展性高
五、接口隔离原则
客户端不应该依赖它不需要的接口。
一个类对另一个类的依赖应该建立在最小的接口上。
简单地说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。
当一个接口太大时,我们应该将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。
优点:
降低耦合性
提升代码的可读性
隐藏实现细节
六、迪米特原则
迪米特法则(Law of Demeter)又叫作最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解。简单地说,就是一个类应该对自己需要耦合或调用的类知道得最少。迪米特法也可以简单说成:talk only to your immediate friends(只与直接的朋友通信)。一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
优点:
降低复杂度
降低耦合度
增加稳定性
(完)
好处
1、第一个,如果你的后端是傻逼改了接口地址,你只要在上边改就行了。
2、第二个,你定义(抽象)了请求的接口和返回值,那么如果接口和返回值变了你不用改调用参数,直接改接口定义就行了。
3、第三个,如果你这个接口不要了,文件一删就结束,不用去改业务代码(摊手)。