zoukankan      html  css  js  c++  java
  • 软件设计必备之“SOLID原则”

    原创 未知bug  最后一个bug  2月21日

    01SOLID原则简介

        在我们的软件设计和维护的过程中总需要不断的更改我们代码或者必要的时候还需要修改我们的设计,更别说领导要别的工程师来维护代码的囧境了,那么工程师之间一定要有一套设计的原则来维系一套优秀的代码。那么"SOLID原则"将派上用场,与其说它是原则还不说是一种理想的目标吧!因为基本上很难有代码能够全面的满足它。

        "SOLID"其实是5种软件设计原则名称得首字母,他们分别是:

        “Single Responsibility Principle”;

        "Open Closed Principle";

        "Liskov Substitution Principle ";

        "Interface Segregation Principle";

        "Dependency Inversion Principle"。

        根据英文单词大体的意思分别是:单一职责原则,开闭原则,Liskov替换原则,接口分离原则,依赖原则。这样看来确实有必要,单一职责就是模块的封装,替换原则应该就是灵活性,接口便是可移植性等等,我这里只是简单的理解下,后面再对每个原则详细聊一聊。

    02单一职责原则

        从字面上的意思很好理解,也就是我们的数据和函数功能上的单一。这样一方面便于模块化,也能让模块变得更加内聚!

        比如说收银员负责收钱就好,服务员负责为客人服务,这样明确分工就能更好的进行问题处理和程序设计上的耦合。

    03开闭原则

        可能大家第一感觉并没有很好的理解该原则的意思,一句话“对扩展开放对修改关闭”,也就是说我们以增加新的代码来进行扩展我们模块的功能,而不是修改当前的代码来兼容以前的代码。

        说得再简单点就是不应该修改已有的且客户正常使用的功能代码,而是客户提出新的需求之后,我们通过增加代码和旧的代码共同为客户服务。这样一方面能够缩短测试过程,同时保证旧功能的稳定性。比如说我们发送消息通过可以通过串口通信send,也可以通过can通信send,那么我们下次再需要添加通信当时,只需要在通信类型中添加一个类型,同时添加对应Send即可!

    04Liskov替换原则

        替换原则主要是为了不改变底层的变动的一种思想,当我们上层需要实现新的功能的时候,我们底层的接口一般不需要进行修改,而是用现有接口实现新的上层应用,其实也就要求我们在进行底层接口开发的时候中层接口也应该具备底层接口的相关功能,以便上层使用。

        比如说我们你的下属向你汇报了1-2-3点事情,你可能根据1-2-3点事情总结了第4点事情,这个时候你需要把1-2-3-4都能向你的boss汇报,这样才是全面的。

    05接口分离原则

        简单的说接口越简单越好,有时候我们为了把接口完全的开放给用户出现了一大堆接口,这样是没有必要的,因为有些接口用户根本用不上,我们需要对接口进行分类简化,根据用户需求进行接口的分离!使得接口更容易被移植和使用!

    06依赖倒置原则

        也就是说我们上层依赖的不应该还是具体的某个对象,而且应该依赖一种抽象的类!

        比如说我们要开发一个通信协议,该通信协议不应该依赖于串口这个设备对象,而是应该依赖于一种普遍的通讯类,比如说依赖Open/Send/Receive等。

        好了,这里是公众号“最后一个bug”,这里仅仅简单的介绍了一下这种设计思想,后续再以实际的例子进行解析!大家多多关注!

  • 相关阅读:
    ALINK(十):数据导入与导出 (三)Catalog读入 (CatalogSourceBatchOp)
    ALINK(九):数据导入与导出 (二)Text文件读入 (TextSourceBatchOp)
    ALINK(八):数据导入与导出 (一)CSV文件读入 (CsvSourceBatchOp)
    机器学习sklearn(四): 数据处理(一)数据集拆分(一)train_test_split
    机器学习sklearn(三):加载数据集(数据导入)
    机器学习sklearn(二):SKLEARN快速开始
    机器学习sklearn(一):教程与资料
    程序员的代码的基本素养
    mysql常用函数和语句模式
    BootStrap学习
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12633983.html
Copyright © 2011-2022 走看看