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

    软件设计原则:单一职责原则、开放-封闭原则、依赖倒转原则

    这里摘录书中的几句话:

    单一职责原则:

    就一个类而言,应该仅有一个引起它变化的原因。

    如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。

    软件设计真正要做的许多内容,就是发现职责并把职责相互分离。

    如果能想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑职责分离。

    开放-封闭原则:

    软件实体(类、模块、函数等)应该可以扩展,但是不能被修改。

    对于扩展是开放的,对于更改是封闭的。

    无论模块是多么“封闭”,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须猜测出最有可能发生变化的种类,然后构造抽象来隔离那些变化。

    在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。

    面对需求,对程序的改动是通过增加新代码进行的,而不是改动现有的代码。

    开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是 可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意进行抽象同样不是一个好主意。

    拒绝不成熟的抽象和抽象本身一样重要。

    依赖倒转原则:

    高层模块不应该依赖低层模块,两者都应该依赖于抽象。抽象不应该依赖细节,细节应该依赖于抽象。

    要针对接口编程,不应该针对实现编程。

    里氏替换原则:子类型必须能够替换掉他们的父类型。  把父类都替换成他的子类,程序的行为没有变化。

  • 相关阅读:
    oracle 导入数据时提示只有 DBA 才能导入由其他 DBA 导出的文件
    oracle 常用语句
    android udp 无法收到数据 (模拟器中)
    android DatagramSocket send 发送数据出错
    AtCoder ABC 128E Roadwork
    AtCoder ABC 128D equeue
    AtCoder ABC 127F Absolute Minima
    AtCoder ABC 127E Cell Distance
    CodeForces 1166E The LCMs Must be Large
    CodeForces 1166D Cute Sequences
  • 原文地址:https://www.cnblogs.com/SasaL/p/10620258.html
Copyright © 2011-2022 走看看