面向对象编程的基本原则

原创 2016年06月01日 14:41:40

面向对象的基本设计原则有:单一职责原则,开放-封闭原则,依赖倒转原则,里氏代换原则,迪米特法则,接口隔离原则。

1.单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。也就是说,当能够想到多余一个动机去改变一个类,那么这个类就具有多余一个的职责,也就应该考虑类的职责分离。

2.开放-封闭原则:是说软件实体(类、模板、函数等)应该可以扩展,但是不可修改。

开放-封闭原则的两个特征:一是说对于扩展是开放的,另一个是说对于更改是封闭的。也就是说,当有新的需求或者变化时,设计的软件可以相对容易修改,可以对现有的代码进行扩展,来适应新的情况,而不是说当有新的需求时,从头来设计这个程序。

实现开放-封闭原则的核心思想就是对抽象编程,而不是对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以修改就是封闭的;而通过面向对象的继承和多态机制,又可以实现对抽象类的继承,通过覆写其方法来改变固有行为,实现新的拓展方法,所以扩展就是开放的。

开放-封闭原则是面向对象设计的核心,遵循这个原则可以带来许多好处,例如,可维护、可扩展、可复用、灵活性好等。然而,对于应用程序中的每个部分都刻意进行抽象不是一个好主意,应当拒绝不成熟的抽象。

3.依赖倒转原则:A.高层模块不应该依赖低层模块。两个都应该依赖抽象。

                B.抽象不应该依赖细节。细节应该依赖抽象。

面向过程的开发中,往往为了使代码可以复用,一般都将常用代码写成许多的程序库,这样在做新的项目时,去调用这些低层的函数。这就是高层模块依赖于低层模块。就像是电脑里如果CPU、内存、硬盘都依赖于具体的主板,主板坏了,所有的部件就都没用了。这肯定是不合理的。而如果不管是高层模块还是低层模块,它们都依赖于抽象(接口或者抽向类),只要接口是稳定的,那么任何一个的更改都不用担心其他受到影响,这样使得无论高层模块还是低层模块都可以很容易的被复用。

依赖倒置原则可以说是面向对象设计的标志,编写代码时应时刻考虑针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口。

4.里氏代换原则:子类型必须能够替换掉它们的父类型。

只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正的被复用,而子类也能在父类的基础上增加新的行为。例如,猫继承了动物类,以动物的身份拥有吃、喝、叫等行为,当我们需要狗、猪也拥有类似的行为时,只需要更改实例化的部分,代码的其他部分都不需要改变。

5.迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限。即一个类包装好自己的private状态,不需要让别的类知道的字段或行为不要公开。

迪米特法则的根本思想,是强调了类之间的松耦合。在程序设计时,类之间的耦合越弱,越有利于复用。

6.接口隔离原则:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。

我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。在程序设计中,依赖几个专用的接口要比依赖一个综合的接口更灵活。接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。

以上就是面向对象的基本设计原则,在进行程序设计时,遵守这些原则可以使我们的代码可维护、可扩展、可复用、灵活性好,需要我们在实践中时时刻刻的遵守这些原则。


版权声明:本文为博主原创文章,未经博主允许不得转载。

面向对象编程的六个基本原则

运用面向对象的思想进行软件设计时要遵循的6个基本原则: (1)       单一职责原则:一个类只负责一项职责。降低代码复杂度,增加可读性可维护性,只有在逻辑足够简单、类中的方法足够少时才可以在代码级...
  • seek24
  • seek24
  • 2013年10月28日 15:16
  • 1952

面向对象的三个基本元素,五大基本原则

三个基本元素: 1. 封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接...
  • u014745848
  • u014745848
  • 2016年03月02日 22:32
  • 2056

面向对象设计的五个基本原则

面向对象的3个基本要素:封装、继承、多态 面向对象的5个基本设计原则: 单一职责原则(Single-Resposibility Principle)     其核心思想为:一个类,最...
  • rankun1
  • rankun1
  • 2016年03月03日 16:32
  • 2514

OOP(面向对象编程)四个基本原则

  • 2010年01月08日 13:56
  • 171KB
  • 下载

(Java)面向对象编程六大基本原则

《Android源码设计模式解析与实战》 面向对象六大原则
  • qq_26440221
  • qq_26440221
  • 2016年12月19日 19:10
  • 453

慕课网----大话PHP设计模式 六(面向对象编程的基本原则,自动加载config)

一。面向对象编程的基本原则 1.单一职责:一个类,只需要做好一件事情。不要使用一个类来完成一个很复杂的功能。而是拆分成更小更具体的类。 2.开放封闭:一个类,应该是可扩展的,而不可修改的。不应该使...
  • Rodgexue
  • Rodgexue
  • 2016年02月26日 11:30
  • 3111

对面向对象编程的6个基本原则的理解

单一职责原则 定义:一个类中应该是一组相关性很高的函数,数据的封装。 做法:根据对业务和需求的理解,去划分一个类,一个函数的职责。 举例:比如要实现一个加载图片的功能,并在加载图片的时候实...
  • c15522627353
  • c15522627353
  • 2016年04月12日 00:30
  • 1008

PHP面向对象编程基本原则

首先祝大家节日快乐!!! 额,不知道你们剁手没,小梦是没有!整整已经错过了第九个年头! 小伙伴是不是有一种感觉,PHP入门的时候简直爱不释手,总是把 ”PHP是世界上最好的语言“ 挂在嘴边...
  • simengphp
  • simengphp
  • 2017年11月13日 09:20
  • 36

聊聊面向对象编程的几个基本原则

点击上方“程序员大咖”,选择“置顶公众号” 关键时刻,第一时间送达! 进行面向对象编程,有下面几个原则:  一. 面向抽象原则  二. 开闭原则  三. 多用...
  • Px01Ih8
  • Px01Ih8
  • 2017年11月02日 00:00
  • 65

面向对象的基本原则概述(1)

  • 2008年10月17日 14:44
  • 68KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象编程的基本原则
举报原因:
原因补充:

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