查看: 40|回复: 0

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

[复制链接]

1

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-12-28
发表于 2026-4-26 10:14:00 | 显示全部楼层 |阅读模式

一、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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部