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. Qt之遍历文件夹(经典详解)

    关于Qt操作文件夹.文件的知识用途较多,比如遍历下一层乃至所有子孙文件.文件夹,获取它们的一些信息(大小.类型.最后更改时间等).当然,也可以进行级联删除.     首先看简单的: 一.Qt遍历文件夹 ...

  2. [置顶] 【VB.NET2010】在空间上显示提示气泡框的方法

    在VB6中,有ToolTip这个属性,可以设置鼠标悬浮在控件上的时候显示的图像. 而,在VB.NET中,实现这个功能需要使用一个类,ToolTip类. 代码如下(为了立即起效,建议将这些代码放在For ...

  3. Debian自启动知识 2015-03-31 20:23 79人阅读 评论(0) 收藏

    Debian6添加了insserv用来代替update-rc.d.update-rc.d 就不多做介绍. Debian6里边要添加一个自动启动的服务需要先将启动脚本放在/etc/init.d,然后使用 ...

  4. 查询,创建,扩充表空间&&impdp--------表空间大全

    周六晚上还在办公室导入数据. 按schemas导入成功的关键是:导入的环境和源数据环境里面的表空间大小,表空间名字,需要一模一样 (当然,表空间大小创建到和源数据环境里面ues_size大小就可以了) ...

  5. 微信公众号支付流程(Node实现)

    前言 花费了一天时间,调通了微信公众号支付.作下记录,方便以后再次填坑.先声明,微信公众号支付,不同于微信H5支付,这点在本文结束时再详细说明. 微信配置 设置测试目录 在微信公众平台设置,栏目见下图 ...

  6. Javascript 函数和模块定义

    匿名函数 // calculator.js(function(root) {  var calculator = {    sum: function(a, b) { return a + b; }  ...

  7. Matlab使用xlsread, xlswrite函数导致excel进程无法终止的问题

    系统版本:Win7 64位 Matlab版本:R2015b 问题描述:使用excel的操作函数,比如xlsread,xlswrite,导致excel进程无法终止,任务管理器中仍残留excel进程,打开 ...

  8. C#--Session用完如何清除

    Session.Abandon();//清除全部Session//清除某个SessionSession["UserName"] = null;Session.Remove(&quo ...

  9. EF FluentAPI映射一对多 关系时候报错

    提示很明显,不可为空的外键为空了,但是 问题是,我只是初始化 关系映射而已:见代码 public ColumnsCategoryMapConfiguration() { ToTable("C ...

  10. HashMap HashTable HashSet

    原文转载自 http://blog.csdn.net/wl_ldy/article/details/5941770 HashMap是新框架中用来代替HashTable的类 也就是说建议使用HashMa ...