面向对象设计的六大原则简介

原创 2004年10月28日 12:56:00

OOD基本上有6大原则,而实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己。6大原则如下:

1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。其他的原则也是对它的实现提供了路径。

2) Liskov Substituition Principle(LSP),里氏代换原则,很严格的原则,规则是“子类必须能够替换基类,否则不应当设计为其子类。”也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类,如有这方面需要的设计就应当参考以下两种方法替换:

   1. 

   2. 

3) Dependence Inversion Principle(DIP),依赖倒换原则,“设计要依赖于抽象而不是具体化”。换句话说就是设计的时候我们要用抽象来思考,而不是一上来就开始划分我需要哪些哪些类,因为这些是具体。这样做有什么好处呢?人的思维本身实际上就是很抽象的,我们分析问题的时候不是一下子就考虑到细节,而是很抽象的将整个问题都构思出来,所以面向抽象设计是符合人的思维的。另外这个原则会很好的支持OCP,面向抽象的设计使我们能够不必太多依赖于实现,这样扩展就成为了可能,这个原则也是另一篇文章《Design by Contract》的基石。

4) Interface Segregation Principle(ISP),“将大的接口打散成多个小接口”,这样做的好处很明显,我不知道有没有必要再继续描述了,为了节省篇幅,实际上我对这些原则只是做了一个小总结,如果有需要更深入了解的话推荐看《Java与模式》,MS MVP的一本巨作!^_^

5) Composition/Aggregation Reuse Principle(CARP),设计者首先应当考虑复合/聚合,而不是继承(因为它很直观,第一印象就是“哦,这个就是OO啊”)。这个就是所谓的“Favor Composition over Inheritance”,在实践中复合/聚合会带来比继承更大的利益,所以要优先考虑。

6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法则或最少知识原则,这个原则首次在Demeter系统中得到正式运用,所以定义为迪米特法则。它讲的是“一个对象应当尽可能少的去了解其他对象”。也就是又一个关于如何松耦合(Loosely-Coupled)的法则。

好了,以上是6大原则(或法则)的介绍,对这些原则的深入研究正是如何得到设计模式的道路。在进行了深入了解后我们就可以开始看看设计模式了,设计模式正是对这些法则的应用,著名的设计模式有四人帮(Gang of Four,GoF)的23个模式,除此之外还有很多其他的一些著名模式,大家可以慢慢研究,如果能自己产出一两个模式的话那就太好了,证明你也是高手了!^_^

简述面向对象的六大原则

白话单一职责原则,开闭原则,里氏替换原则,依赖倒置原则......
  • JF_1994
  • JF_1994
  • 2016年07月15日 20:23
  • 833

简述SOLID的面向对象的设计原则

在这篇博文中,将给大家简要介绍一下SOLID的面向对象的设计与实现的基本原则。其实这个需要自己做项目和看代码的体会,个人经验觉得还是比较有用的。 什么是SOLID SOLID是面向对象设计与实现的...
  • leoleocs
  • leoleocs
  • 2015年04月29日 18:45
  • 1032

面向对象六大原则

本文出自《Android源码设计模式解析与实战》中的第一章。 1、优化代码的第一步——单一职责原则单一职责原则的英文名称是Single Responsibility Principle,简称SR...
  • bboyfeiyu
  • bboyfeiyu
  • 2015年11月30日 00:10
  • 32399

面向对象设计六大原则

转自:http://blog.csdn.net/coolingcoding/article/details/8043265 一、单一职责原则: 全称:“Single-Responsib...
  • u011271202
  • u011271202
  • 2014年07月25日 22:54
  • 294

面向对象设计的六大原则

(本文参考: 《您的设计模式》CBF4LIFE 2009 年5 月 http://www.cnblogs.com/cbf4life/archive/2009/12/15/1624435.html)...
  • liyuye
  • liyuye
  • 2013年08月31日 18:17
  • 498

java面向对象设计的六大原则

开闭原则是设计原则基础的基础,其它原则均围绕开闭原则进行展开。开闭原则也就是一个软件实体应当对扩展开放,但对修改关闭。满足了开闭原则的设计,我们的系统将达到在设计稳定的基础上,方便的对软件进行扩展,插...
  • screensky
  • screensky
  • 2012年07月16日 16:06
  • 947

JAVA面向对象-----java面向对象的六大原则

现在编程的主流语言基本上都是面向对象的。如C#,C++,JAVA。我们在使用时,已经构造了一个个的类。但是往往由于我们在类内部或外部的设计上存在种 种问题,导致尽管是面向对象的语言,却是面向过程的逻辑...
  • duruiqi_fx
  • duruiqi_fx
  • 2016年07月22日 14:49
  • 9703

面向对象设计的六大原则之单一职责原则

面向对象设计的六大原则之单一职责原则单一职责原则(Single Responsibility Principle):一个类中应该是一组关联性很高的函数以及数据的封装。 职责的定义 如何划分类的职责 职...
  • u011483122
  • u011483122
  • 2016年07月13日 11:33
  • 152

面向对象六大原则(三):里氏替换原则

面向对象程序设计(OOP)的六大原则是我对《Android源码设计模式解析与实战》的读后笔记。要设计出灵活又便于维护的软件,必须要求我们的设计能力与代码质量高,也就是我们所谓的编程思想。因此,我们需以...
  • Loften_93663469
  • Loften_93663469
  • 2015年12月12日 22:46
  • 853

理解什么是的面向对象设计

自学前端快一年了,期间一直都想写博客,但因为个人水平有限,所以一直没敢写,今天终于鼓起勇气尝试决定写一篇博文。向大家分享一下我的学习心得。因为是第一次写,所以有什么不当之处请大家多多包涵,并给予指正。...
  • qq_36276528
  • qq_36276528
  • 2017年03月31日 22:46
  • 708
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象设计的六大原则简介
举报原因:
原因补充:

(最多只允许输入30个字)