.NET SOLID、高内聚低耦合、分层

一、SOLID 原则(类与方法的设计规范)

  SOLID 是 5 个面向对象设计原则的缩写,目的:让代码易维护、易扩展、少出 bug。  

1. S – 单一职责原则 (Single Responsibility)

  一个类 / 方法只做一件事,且只做好一件事  

  • 坏:一个类同时处理「用户注册 + 发送邮件 + 日志记录」
  • 好:拆成 UserServiceEmailServiceLogger

 

// 坏:混合了业务逻辑 + 日志 + 邮件
public class UserManager
{
    public void Register(User user) { /* 注册 + 写日志 + 发邮件 */ }
}

// 好:每个类只负责一个功能
public class UserService { public void Register(User user) { } }
public class EmailService { public void SendWelcomeEmail() { } }
public class AppLogger { public void LogInfo() { } }

 

2. O – 开闭原则 (Open/Closed)

  对扩展开放,对修改关闭  

  • 新增功能时,新增代码,不要修改原有稳定代码
  • .NET 中常用:接口、抽象类、依赖注入实现

 

// 用接口扩展,不修改原有代码
public interface IPayment { void Pay(); }
public class AliPay : IPayment { }
public class WeChatPay : IPayment { }

 

3. L – 里氏替换原则 (Liskov Substitution)

  子类必须能完全替换父类,不破坏程序逻辑  

  • 继承不能破坏原有功能
  • 不要随便重写、破坏父类约定

 

4. I – 接口隔离原则 (Interface Segregation)

  接口要小而专,不要大而全  

  • 不要让类实现它用不到的接口方法
  • 拆分成多个专用接口

 

5. D – 依赖倒置原则 (Dependency Inversion)

  高层模块不依赖低层模块,都依赖抽象  

  • 这是 .NET Core 依赖注入 (DI) 的核心理论
  • 代码依赖接口 / 抽象,不依赖具体实现

 

// 依赖接口,不依赖具体类
public class OrderService
{
    private readonly IPayment _payment;
    // 构造函数注入(依赖倒置)
    public OrderService(IPayment payment) => _payment = payment;
}

 


 

二、高内聚、低耦合(模块 / 组件设计目标)

  这是评价代码质量好坏最直观的标准,SOLID 就是为了实现它。  

1. 高内聚 (High Cohesion)

  相关的代码放在一起,不相关的分开  

  • 一个模块内部的功能高度相关
  • 例:所有用户相关逻辑放在 UserService,不混订单、支付

 

2. 低耦合 (Low Coupling)

  模块之间依赖越少、越简单越好  

  • 类与类之间不直接强依赖
  • 修改 A 不会导致 B、C、D 大面积报错
  • .NET 实现手段:接口 + 依赖注入

 

一句话总结

  高内聚:自己的事情自己管   低耦合:别人的事情少依赖  


 

三、分层思想(系统架构组织方式)

  分层是把大型项目按职责拆成多层,是高内聚低耦合在项目结构上的落地。  

.NET 最经典的三层架构 + 领域驱动 (常用)

 

表现层 (Presentation)
↓
应用层/业务逻辑层 (Application/BLL)
↓
数据访问层 (DAL/Repository)
↓
数据层 (Database/Model)

 

各层职责(.NET 项目结构)

 

  1. 表现层  
    • API 控制器、MVC 视图、Blazor 页面
    • 接收请求、返回结果
    • 不写业务逻辑

     

  2. 业务逻辑层 (BLL)  
    • 核心:所有业务规则、验证、流程
    • 项目命名:xxx.Application / xxx.Services

     

  3. 数据访问层 (DAL)  
    • 只做数据库 CRUD
    • 常用:EF Core、仓储模式 (Repository)
    • 项目命名:xxx.Infrastructure / xxx.Repositories

     

  4. 模型层 (Model)  
    • 实体类、DTO、枚举
    • 被所有层共享

     

分层的好处

 

  • 每层只依赖相邻下层,耦合极低
  • 换数据库不影响业务层
  • 换接口 / 前端不影响业务逻辑
  • 方便单元测试

 


 

四、三者关系(最重要!)

 

SOLID 原则
   ↓
实现 高内聚、低耦合
   ↓
落地到 分层架构

 

  • SOLID:写好一个类
  • 高内聚低耦合:设计好一组类
  • 分层:搭建好整个系统

 


 

总结

 

  1. SOLID:5 条规则,让类职责清晰、易扩展
  2. 高内聚低耦合:代码质量目标,相关代码聚合、减少依赖
  3. 分层思想:项目架构方案,把系统按职责拆分
  4. 三者是从代码到架构的完整设计体系

文章摘自:https://www.cnblogs.com/chuansheng/p/19915116