zoukankan      html  css  js  c++  java
  • 软件设计原则

    前些天,在朋友那看到一本书《你必须知道的.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)

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

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

  • 相关阅读:
    idea常用快捷键及操作
    Ubuntu 装nexus
    ubuntu安装gitlab
    ubuntu安装jdk,maven,tomcat
    ubuntu安装gitlab-ci-runner、注册
    ubuntu开启远程shell,开启上传下载
    Ubuntu安装软件提示boot空间不足
    POJ3461 KMP简单变形输出模式串在主串出现的次数
    涨姿势stl map['a']['a']=b;
    对链表的操作(数据结构线性表算法设计练习)
  • 原文地址:https://www.cnblogs.com/tomin/p/1362523.html
Copyright © 2011-2022 走看看