软件设计原则

前些天,在朋友那看到一本书《你必须知道的.NET》,得知本书是我们的博客园里面的一位高手写的。我很迫切的接到了这本书,一个星期的时间我把它看完了,我完全沉浸在本书中,有时候看的忘了时间。甚至是连脚冻的发麻都不知道。对于精华的部分,我做了点笔记。有的我拿出来和大家分享。如有机会的话,可以把那本书卖下来。

    GOF 说道:好的设计,成就好的作品。但在软件设计的过称中,在原则的规范下,那我们的软件会重构的更好。下面是个人总结的:

三大基本面向对象设计原则

---针对接口编程,而不是针对实现编程

---优先使用对象组合,而不是类继承

---封装变化点

几条更具体的设计原则:

1、单一职责(SRP,Sign Responsible Principle)

      核心思想:一个类,最好只做一件事情,应该仅有一个引起它变化的原因(高高内聚、低耦合)

 

2、开放封闭原则(OCP,Open Closed Principle)

     核心思想:类模块应该是课扩展的,但是不可修改(对扩展开放,对更改封闭)

对扩展开放,意味着有新的需求变化时,可以对现有代码进行扩展,适应新要求。

对更改封闭,意味着类一旦完成就可以独立完成其工作,而不需要对类进行更改。

 

3、Liskov替换原则(LSP)

     核心思想:子类必须能够替换它们的基类。

 

4、依赖倒置原则(DIP,Dependency Inversion Principle)

     核心思想:依赖于抽象。

高层模块不应该依赖底层模块,二者都应该依赖于抽象。

抽象不应该依赖于实现细节,实现细节应该依赖于抽象。

 

5、接口隔离原则(ISP, Interface Segregation Principle)

    核心思想:使用多个小的专门的接口,而不要使用大的总接口。

接口应该是内聚的,应该避免出现“胖接口”。

一个类对另一个类的依赖应该建立在最小接口上,不要强迫依赖不用的方法,这是一种接口污染。

 

6、合成"聚合复用原则(CARP, Composite/Aggregate Reuse Principle)

核心思想:在新对象中已有对象,使之成为就对象的成员,从而通过操作这些对象应该尽可能少的和其他软件实体发生相互作用。

这里面都是设计模式中常用的规则。

 

posted @   tomin  阅读(3614)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示