当前位置: 首页 > news >正文

系统设计原则

单一职责原则

·       一个类或者模块只负责完成一个职责或者功能。也就是说在类的设计中,我们不要设计大而全的类,而是要设计粒度小、功能单一的类。可以通过几个点来分析类的职责是否单一:

        1. 类中的代码行数、属性或方法是否过多;

        2. 类依赖的其他类是否过多;

        3. 类中的私有方法是否过多;

        4. 类中的大量方法是否只是频繁操作其中的某几个属性。

        单一职责的判断条件在不同业务或背景下会有所不同,举个例子,User类中包含了省市县相关的字段。如果该类的定位只是用于展示用户信息则没有违反单一职责原则,但如果该类的使用范围与电商相关,则应该抽出地址相关的字段单独成类。

开发封闭原则

        软件中的对象、类、方法和模块对扩展应该是开放的,但是对于修改是封闭的。简单说就是应该用抽象去定义结构,用具体实现扩展细节,以保证软件系统开发和维护过程的可靠性。符合开闭原则的设计具有如下几个优点:

        1. 新老逻辑解耦,需求发生改变不会影响老业务的逻辑;

        2. 改动成本最小,只需要追加新逻辑不需要改旧逻辑;

        3. 为代码提供了稳定性和可扩展性;

里氏替换原则

        如果S是T的子类型,对于S类型的任意对象,如果将他们看作是T类型的对象,则对象的行为也应该和期望行为一致。理解里氏替换原则首先需要搞懂两个问题:

        1. 什么是替换:同一个行为具有多个不同的表现形式。简单理解就是当一个方法的参数是了个接口或基类时,这个方法可以接收所有实现过这个接口或继承了该基类的实现类;

        2. 什么是与期望行为一致的替换:在不了解派生类的情况下,仅通过接口或基类的方法,就能清楚的知道方法的行为。不管哪个派生类的实现,都与接口或基类方法的期望行为一致。

接口分离原则

        一个类对另一个类的依赖应该建立在最小的接口上。简单说就是要为各个类建立它们需要的专用接口,而不要试图去建立一个庞大的接口供所有依赖它的类去调用。遵循接口隔离原则具备的优势:

        1. 将胖接口分解成多个粒度小的接口,可以提高系统的灵活性和可维护性;

        2. 使用多个专门的接口可以提现出对象的层次;

        3. 遵循接口隔离原则可以减少项目中的冗余代码。

依赖倒置原则

        在设计代码架构时,高层模块不应该依赖于底层模块,两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。可以简单理解为:由于细节具有多变性而抽象层则相对稳定。因此以抽象为基础搭建起来的架构要比以细节为基础搭建起来的架构要稳定的多。

迪米特法则

        一个类、模块对其他的类、模块了解的越少越好。简单理解就是:不该有直接依赖关系的类之间不要有依赖,有依赖关系的类之间尽量只依赖必要的接口。

        如果两个实体间无需直接通信,那么就不应该发生直接的相互调用,可以通过第三方来实现间接调用。其目的是为了降低类之间的耦合度,提高模块的相对独立性。

        迪米特法则需要根据实际情况选择是否使用,过度使用迪米特法则会使系统产生大量的中介类从而导致系统复杂性提升,模块间通信效率降低。在实际开发中需要慎重权衡,在保证高内聚低耦合的同时使系统结构清晰。

http://www.dtcms.com/a/355105.html

相关文章:

  • 【Selenium】UI自动化测试框架设计:从项目结构到Base-Page层的最佳实践
  • 1-python 自定义模板导出文档-基础实现
  • 【cursor】提示词示范
  • 瑞芯微RK3568与君正X2600e平台Linux系统CS创世SD NAND应用全解析与驱动架构详解
  • springboot Apache PDFBox 通过路径参数读取文件信息流,并转化为pdf 在网页预览
  • 云计算学习100天-第31天
  • vue table 甘特图 vxe-gantt 实现多个表格的任务互相拖拽数据
  • GitHub 热榜项目 - 日榜(2025-08-28)
  • 鸿蒙banner页实现
  • Docker从零学习系列之Docker是什么?
  • Java有几种文件拷贝方式,哪一种效率最高?
  • 【DAB收音机】DAB 信号发生器介绍
  • 从零入门:C 语言操作 MySQL 数据库的完整指南
  • 多模态大模型研究每日简报【2025-08-28】
  • Logstash数据迁移之es-to-kafka.conf详细配置
  • 5G核心网的架构和功能详解
  • 大模型微调技术
  • 自下而上的树形dp
  • Servlet 注解:简化配置的完整指南
  • 隐语Kuscia正式发布 1.0.0 版本,实现支持 Hive 数据源,支持 envoy 日志进行异常分析等功能
  • hive on tez如果是2个大表union会写几次临时文件到hdfs目录,数据量如何计算
  • hive on tez为什么写表时,要写临时文件到hdfs目录
  • 最长连续序列,leetCode热题100,C++实现
  • 解读 AUTOSAR AP R24-11 Manifest 规范 —— 从部署到安全的全流程支撑
  • 可拖拽指令
  • Xray与XPOC工具对比分析
  • 让企业资产管理高效透明——深度解析固定资产管理系统的功能、优势与价值
  • HBase Compaction HFile 可见性和并发安全性分析
  • Docker-compose离线安装
  • 【Canvas与盾牌】“靡不有初,鲜克有终”黄竖条盾牌