七大软件设计原则

    科技2022-07-13  136

    文章目录

    七大软件设计原则1.开闭原则2.依赖倒置原则3.单一职责原则4.接口隔离原则5.迪米特法则6.里氏替换原则7.合成复用原则 总概括

    七大软件设计原则

    github地址

    1.开闭原则

    类、模块、函数应对扩展开放,修改关闭。

    喝水共用水杯,将喝水的材料中药变为水

    2.依赖倒置原则

    高层模块不应该依赖于低层模块,二者应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。

    A-B是一对情侣,但A又喜欢C、D、E,这些都在A中有所实现,B必须问A,A才会告诉B这些细节,但是B又想A只喜欢他,想控制他,让他喜欢谁就喜欢谁,就让A实现接口,B对这个接口传入什么A就喜欢什么

    3.单一职责原则

    不要存在一个以上导致类变更的原因,假设一个class负责两个职责,一旦发生需求变更,修改一个职责的逻辑代码,又可能导致另一个功能发生故障,则需两个class类来实现两个职责,进行解藕。

    喝中药的杯子,若两用麻烦,还要洗

    4.接口隔离原则

    用多个专门的接口,而不是使用单一的总接口,客户端不应该依赖它不需要的接口。

    喝水,喝中药。不舒服的时候应喝中药,不应全部依赖。

    5.迪米特法则

    一个对象应该对其他对象保持最少的了解,尽量降低类与类之间的耦合,强调与朋友交流,不和陌生人说话。

    喝中药跟水,若只能有一个杯子,则中药喝完后处理完了再去接水,不能在喝水的途中又处理中药。杯子是容器,我们的引用,中药跟水是不同的处理。类似于controller跟service,我只传递返回值的引用,将业务操作都在service进行处理

    6.里氏替换原则

    子类可以扩展父类的功能,但不能改变父类原有的功能。

    针对于水杯,我们既可以喝中药也可以喝水

    7.合成复用原则

    尽量使用对象组合或对象聚合的方式实现代码复用,而不是用继承的关系达到代码复用的目的

    杯子既装中药又装水,都叫水杯,将其作为抽象类,两种不同的实现

    总概括

    依赖倒置原则

    1.杯子是一个事物,一个类,作为一个容器(抽象类)有基本的功能,他有许多的实现,如水杯,茶水杯,调用do就调用相应的类——合成复用原则

    2.现在把他当作一个功能看待,接中药跟水,之前是接中药的,现在我要接水了,我直接继承这个中药类,可以直接修改里面对应方法的代码——开闭原则

    3.但是现在把代码修改了,我就不能喝中药了,只能重新new一个中药类,那么我就不覆盖,添加一个方法,将一个水杯既能喝水又能喝中药——里氏替换原则

    4.喝水跟喝中药是两个功能,但是现在同学觉得水里面有中药的味道不舒服,所以这两个接口不能写在一起,否则总有一个接口为空,所以要拆开,需要什么功能为就将该类继承某个接口——接口隔离原则

    5.但是现在只有一个水杯,又要喝中药又要喝水,那么一定是将中药洗干净后再装水,不能在装水的过程中又要处理中药,传递的只是杯子。——迪米特法则

    6.那么最好的解决办法就是2个杯子,分成两个类。一个装水,一个装中药——单一职责

    Processed: 0.008, SQL: 8