S = Single Responsibility Principle 单一职责原则
O = Opened Closed Principle 开放闭合原则 
L = Liscov Substitution Principle Liscov替换原则
I = Interface Segregation Principle 接口隔离原则
D = Dependency Inversion Principle 依赖倒置原则 1. 单一职责原则 
  引起类变化的因素永远不要多于一个,或者说:一个类有且只有一个职责。 
  如果类包含多个职责,代码会变得耦合;SRP看起来是把事物分离成分子部分,以便于能被复用和集中管理,这点也同样适用于方法级别。
 2. 开放封闭原则 
  软件实体(类,模块,函数等等)应当对扩展开放,对修改闭合。 
  如图:客户端和服务段都耦合在一起。那么,只要出现任何变化,服务端变化了,客户端一样需要改变。 
   
    
  下面则是正确的设计:对外关联接口或者抽象类 
   
 3.Liskov’s 替换原则 
  子类型必须能够替换它们基类型,或者说使用基类引用的函数必须能使用继承类的对象而不必知道它。 
  为什么LSP这么重要: 
  ● 如果没有LSP,类继承就会混乱;如果子类作为一个参数传递给方法,将会出现未知行为; 
  ● 如果没有LSP,适用与基类的单元测试将不能成功用于测试子类;
  4. 接口分离原则 
  客户端不应该被迫依赖于它们不用的接口 
  接口应该仅包含必要的方法,而不该包含其它的。比如: 
   
  注意到IBird接口包含很多鸟类的行为,包括Fly()行为.现在如果一个Bird类(如Ostrich鸵鸟)实现了这个接口,那么它需要实现不必要的Fly()行为(Ostrich不会飞). 这个”胖接口”应该拆分未两个不同的接口,IBird和IFlyingBird,IFlyingBird继承自IBird. 这里如果一种鸟不会飞(如Ostrich),那它实现IBird接口。如果一种鸟会飞(如KingFisher),那么它实现IFlyingBird 
 5. 依赖倒置原则 
  高层模块不应该依赖底层模块,两者都应该依赖其抽象。 
  比如说一个汽车类: 
  class Car{ 
     AmericanEnginee e; //这样是不对的,应该依赖于接口,必须写成IEngine e; 
  } 
  如果代码中不用依赖倒置,我们将面临如下风险: 
  ● 使用低级类会破环高级代码; 
  ●当低级类变化时需要很多时间和代价来修改高级代码; 
  ● 产生低复用的代码; 
   
 
    
  除SOLID原则外还有很多其它的面向对象原则。如: 
  “组合替代继承”:这是说相对于继承,要更倾向于使用组合; 
  “笛米特法则”:这是说”你的类对其它类知道的越少越好”; 
  “共同封闭原则”:这是说”相关类应该打包在一起”; 
  “稳定抽象原则”:这是说”类越稳定,越应该由抽象类组成”; 
 
转自码农社区,http://w3croom.com/read.php?tid-4522.html

面向对象涉及SOLID原则的更多相关文章

  1. 面向对象的SOLID原则白话篇

    面向对象的SOLID原则 简介 缩写 全称 中文 S The Single Responsibility Principle 单一责任原则 O The Open Closed Principle 开放 ...

  2. 【转】面向对象设计的SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. SRP The Single Responsibility ...

  3. 面向对象设计的SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. SRP The Single Responsibility ...

  4. 面向对象设计SOLID五大原则

    转载自:码农社区,http://w3croom.com/read.php?tid-4522.html 今天我给大家带来的是面向对象设计SOLID五大原则的经典解说.       我们知道,面向对象对于 ...

  5. OOD 面向对象面试干货分享| 面向对象设计的SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. 简写 全拼 中文翻译 SRP The Single Res ...

  6. 面向对象SOLID原则的自我理解

    S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则(Programming Priciple)的首字母缩写.面向对象设计的原则SRP The Single Res ...

  7. 浅谈 SOLID 原则的具体使用

    SOLID 是面向对象设计5大重要原则的首字母缩写,当我们设计类和模块时,遵守 SOLID 原则可以让软件更加健壮和稳定.那么,什么是 SOLID 原则呢?本篇文章我将谈谈 SOLID 原则在软件开发 ...

  8. Java 面向对象的设计原则

    一. 1.面向对象思想的核心: 封装.继承.多态.   2.面向对象编程的追求: 高内聚低耦合的解决方案: 代码的模块化设计: 3.什么是设计模式: 针对反复出现的问题的经典解决方案,是对特定条件下( ...

  9. TypeScript 中的 SOLID 原则

    下面的文章解释了正确使用 TypeScrip的 SOLID原则. 原文地址:https://samueleresca.net/2016/08/solid-principles-using-typesc ...

随机推荐

  1. 【转】Android通过Wifi来调试你的应用

    http://stormzhang.com/android/2014/08/27/adb-over-wifi/ 在Android中调试我们经常要用一根USB数据线连接到手机和电脑,一方面麻烦不说,手机 ...

  2. SQL Server 中关于EXCEPT和INTERSECT的使用方法

    熟练使用SQL Server中的各种使用方法会给查询带来非常多方便.今天就介绍一下EXCEPT和INTERSECT.注意此语法仅在SQL Server 2005及以上版本号支持. EXCEPT是指在第 ...

  3. web socket 心跳包的实现方案

    web socket 心跳包的实现方案05/30/2010 现在网络环境错综复杂,socket心跳包是获得健康强壮的连接的有效解决方案,今天,我们就在web socket中实现心跳包方案,是的,尽管我 ...

  4. Android 颜色渲染(九) PorterDuff及Xfermode详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色渲染(九)  PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类 ...

  5. android 09

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  6. linux 内核分析+使用SystemTap调试新增内核模块

    http://blog.chinaunix.net/uid/14528823/list/1.html?cid=189394

  7. Objective-C--Runtime机制

    个人理解: 简单来说,Objective-C runtime是一个实现Objective-C语言的C库.对象可以用C语言中的结构体表示,而方法(methods)可以用C函数实现.事实上,他们 差不多也 ...

  8. block代码块介绍

    关于block的简单介绍 什么是block? Block是C语言的一个语法特性,同时也是C语言的运行时特性,它很像C中的函数指针,因为你可以像使用函数指针一样的去使用block对象:它也很像C++中的 ...

  9. idea使用笔记

    常用快捷键 ctrl+shift+f12 编辑器全屏 win8下输入法不跟随 使用微软输入法即可 默认设置 之前创建maven工程 每次都要选择自己的版本,原来有个默认全局设置 创建maven模板工程 ...

  10. at91sam9x5 linux 4.1.0下使能蜂鸣器驱动

    测试环境:  CPU: AT91SAM9X35      Linux: Atmel提供的linux-at91-linux4sam_5.3 (Linux-4.1.0) 转载请注明: 凌云物网智科嵌入式实 ...