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

.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. 三者是从代码到架构的完整设计体系
http://www.jsqmd.com/news/702773/

相关文章:

  • 2026年杭州高性价比地质标本工厂排名,教育地质标本厂靠谱吗? - 工业品网
  • 2026 国内一线实力派品牌定位公司、营销咨询公司排名榜分析 - 设计调研者
  • IEEE论文接收后,收到proof邮件别慌!手把手教你48小时内搞定校样(附详细截图)
  • 题解:洛谷 B2075 幂的末尾
  • 机器学习中的梯度:概念、计算与优化实践
  • 如何快速掌握Java网络文件访问:jcifs-ng完整指南
  • 探寻2026年杭州地质标本专业供应商,哪家口碑佳 - 工业品牌热点
  • Kubernetes简介 - 邓维
  • 2026一体化预制泵站十大口碑厂家权威榜单:一体化泵站/玻璃钢一体化泵站/一体化污水提升泵站源头实力厂家精选 - 泵站报价15613348888
  • 高性能星空渲染 DirectX 最佳实践:从程序化生成到稳定显示的2026优化指南
  • INAV飞控系统:从新手到专家的5个关键突破点
  • UE4资源引用全解析:从FSoftObjectPath到TSoftClassPtr,别再傻傻分不清了
  • 别再蒙圈了!手把手教你用CANoe和示波器实测CAN/CAN FD波特率(附波形图)
  • GitHub 热门项目 | 2026年04月26日
  • CefFlashBrowser:如何在2024年重温经典Flash游戏的终极解决方案
  • 2026年杭州地区地质模型厂推荐,专业地质模型大型厂家全解析 - mypinpai
  • 2026最新驱动更新后霍格沃茨之遗DX12崩溃怎么办?排查教程
  • AI写作限流的原因技术分析,附公众号小红书限流恢复实战,7天重回流量池的具体操作
  • Windows 11重装系统后,我踩遍了PostgreSQL 11.22的安装坑(附完整避坑指南)
  • 从单体到群体:Swarm开源项目构建分布式LLM智能体协同系统
  • python操作excel
  • Onekey:3步快速获取Steam游戏清单的自动化工具指南
  • 2026年甘肃陇南青海地区配电柜制造企业推荐,防水照明配电柜费用多少 - 工业设备
  • 青龙面板依赖管理终极解决方案:智能自动化部署效率提升3倍
  • HarmonyOS 6学习:V8引擎内存泄露排查与长截图“滚动裁缝”实战
  • 终极窗口调整方案:WindowResizer让你完全掌控任意窗口尺寸
  • 霍格沃茨之遗DX12崩溃怎么解决?DXGI_DEVICE_REMOVED错误终极解决指南
  • 2026年高压釜厂家口碑推荐榜: 加气砖蒸压釜、混凝土蒸压釜、玻璃夹胶高压釜、鞋底发泡高压釜厂家选择指南 - 海棠依旧大
  • WaveTools鸣潮工具箱实战指南:深度解析画质优化与抽卡分析完整方案
  • 告别黑框!用Qt+FFmpeg 4.2.2在Windows上打造你的第一个带界面的视频播放器