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)

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

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

  • 相关阅读:
    Redis和MySQL的结合方案
    Java-CyclicBarrier的简单样例
    第十话-模板方法模式
    Codeforces 19D Points 线段树+set
    操作系统: 二级文件夹文件系统的实现(c/c++语言)
    mongodb数据库的启动和停止
    XML,HTML,XHTML
    android之ViewStub的使用
    教你实现语音识别(基于科大讯飞)
    android通过代码判断手机是否root
  • 原文地址:https://www.cnblogs.com/tomin/p/1362523.html
Copyright © 2011-2022 走看看