zoukankan      html  css  js  c++  java
  • 面向对象设计原则

      先挖个坑,日后慢慢填满,基本都是摘自《敏捷软件开发》(Robert C.Martin著),喜欢的可以去亚马逊直接购买。

     

    设计的臭味——腐化软件的气味


    • 僵化性(Rigidity):很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动
    • 脆弱性(Fragility):对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题
    • 牢固性(Immobility):很难解开系统的纠结,使之成为一些可在其他系统中重用的组件
    • 粘滞性(Viscosity):做正确的事情比做错误的事情要困难
    • 不必要的复杂性(Needless Complexity):设计中包含不具有任何直接好处的基础结构
    • 不必要的重复(Needless Repetition):设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一
    • 晦涩性(Opacity):很难阅读、理解。没有很好地表现出意图。

    总结一下,当代码出现

      设计难以改变

      设计易于遭到破坏

      设计难以重用

      难以做正确的事情

      过分设计

      滥用复制、粘贴

      混乱的表达

    就表明软件正在腐化。

     

    面向对象设计原则


     

    这些原则有助于开发人员消除设计中的臭味,并为当前的特性集构建出最好的设计。

    原则如下:

    • 单一职责原则(The Single Responsibility Principle,简称SRP)
    • 开发—封闭原则(The Open-Close Principle,简称OCP)
    • Liskov替换原则(The Liskov Substitution Principle,简称LSP)
    • 依赖倒置原则(The Dependency Inversion Principle,简称DIP)
    • 接口隔离原则(The Interface Segregation Interface,简称ISP)

    虽然在此把他们表述为面向对象设计的原则,但是事实上它们只是软件工程中一直存在的原则的特例而已。

     

    臭味和原则


      设计中的臭味是一种症状,是可以主观进行度量的。这些臭味常常是由于违反了这些原则中的一个或者多个而导致的。例如:僵化性的臭味常常是由于对开放—封闭原则不够关注的结果。

      应该用这些原则来除去臭味。当没有臭味时,不会应用这些原则。仅仅因为是一个原则就无条件的去遵循它的做法是错误的。这些原则不是可以随意在系统中到处喷洒的香水。过分遵循这些原则会导致不必要的复杂性的设计臭味。

  • 相关阅读:
    堆排序
    我花了一年时间来学机器学习
    一个由进程内存布局异常引起的问题
    老曹眼中的Linux基础
    Select模型原理
    socket编程的select模型
    [插件] 如何在一个页面中使用多个SWFUpload对象上传文件
    [算法] 拖动排序
    [算法] 应用版本更新逻辑
    [oracle] 如何使用myBatis在数据库中插入数据并返回主键
  • 原文地址:https://www.cnblogs.com/mo-shou/p/3509379.html
Copyright © 2011-2022 走看看