面向对象设计的七大基本原则

#单一职责原则

定义:一个类只负责一个功能领域中的相应职责(就一个类而言,应该只有一个引起它变化的原因)

是实现高内聚,低耦合的指导方针

#开闭原则

定义:一个软件实体应对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。

#里氏代换原则

定义:所有引用基类的地方必须能透明地使用其子类的对象

是实现开闭原则的重要方式之一

#依赖倒转原则

定义:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类。即使用接口和抽象类进行变量类型声明,参数类型声明,方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。

在大多数情况下,开闭,里氏代换,依赖倒转三个原则会同事出现,开闭是目标,里氏代换是基础,依赖倒转是手段。

#接口隔离

当一个接口太大时,我们需要将它分割成一些更细小的接口

将大接口中的方法根据其职责不同分别放在不同的小接口中,以确保每个接口使用都很方便,并承担某一个单一角色。

接口应该尽量细化,同时接口中的方法应该尽量少,每个接口中只包含一个客户端(如子模块或业务逻辑类)所需的方法即可(定制服务)。

接口也不能太少,会导致接口泛滥。

#合成复用

复用时要尽量使用组合/聚合关系(关联关系),少用继承

组合可以使系统更灵活,降低类与类的耦合度,一个类的变化对其他类造成的影响相对较少。

使用继承时,需要严格遵守里氏代换原则。

#迪米特法则(最少知道原则)

`不要和“陌生人”说话,只与直接朋友通信`

引入一个合理的第三者,来降低现有对象的耦合度。

时间: 2024-10-10 21:28:31

面向对象设计的七大基本原则的相关文章

面向对象设计的七大原则

在上一篇里我们谈了谈为何设计模式,那接下来我们再浅谈一下在面向对象设计中我们常常要遵循的一些原则. 这些原则是经过无数的前人总结出来的经验的结晶. 仅仅有遵循这些原则.你才有可能涉及出优秀的代码.今天我们要谈的原则有七大原则,即:单一职责.里氏替换.迪米特法则,依赖倒转,接口隔离,合成/聚合原则.开放-封闭 . 1.   开闭原则 定义:软件实体应当对扩展开放,对改动关闭.这句话说得有点专业.更通俗一点讲,也就是:软件系统中包括的各种组件,比如模块(Modules).类(Classes)以及功能

面向对象设计的六大基本原则

一.单一职责原则(SRP Single Responsibility Principle) 不要存在多于一个导致类变更的原因.通俗来说,即一个类只负责一项职责. 二.里氏替换原则(LSP Liskov Substitution Principle) 1. 如果对每一个类型为T1的 对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型. 2. 所有引用基类的地方必须能透明地使用其子类对象. 三.依赖倒

面向对象设计七大原则

1. 单一职责原则(Single Responsibility Principle) 每一个类应该专注于做一件事情. 2. 里氏替换原则(Liskov Substitution Principle) 超类存在的地方,子类是可以替换的. 3. 依赖倒置原则(Dependence Inversion Principle) 实现尽量依赖抽象,不依赖具体实现. 4. 接口隔离原则(Interface Segregation Principle) 应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接

七大面向对象设计原则

一.面向对象原则综述 七大原则总脉络图: 二.常用的面向对象设计原则包括7个,这些原则并不是孤立存在的,它们相互依赖,相互补充. . 三.以下详细分析: (一)单一职责原则(Single Responsibility Principle, SRP) 1.定义:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中    或者:就一个类而言,应该仅有一个引起它变化的原因. 2.分析:一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小,而且如果一个类承担的职责过多,就相当于

面向对象设计思想:面向对象设计的基本原则

面向对象设计的基本原则 http://www.cnblogs.com/malaikuangren/archive/2012/03/22/2411315.html 接口: 理解: 各方的一个协议. 好处: 接口和实现分离: 便于拓展: 面向对象设计基本原则: 单一职责原则: 一个类的功能要单一,只做与它相关的事情.在类的设计过程中要按职责进行设计,彼此保持正交,互不干涉. 里氏代换原则: 便于子类和父类的互换. 依赖倒置原则: 针对接口编程,不针对实现编程: 上层模块不应该依赖于底层模块,它们都应

面向对象设计(OOD)七大原则

这篇文章我会不停的维护它,它将会越来越长,但它是关于我在面向对象中的一些学习的思考心得.希望对自己对各位都能实用处. 开篇前,说明一下写这篇文章的原因.原因是由于设计模式.由于设计模式里的各种模式.都是建立在这些原则之上的. 好比盖房子须要夯实的地基,或者比作数学论证中的使用到的公理.你不能说为什么盖房子一定要建立在地基之上.也不能说为什么两点一直线,三点一面这些公理为什么就这么牛逼的存在,由于这是自然规律.你必须遵守它们. 这些设计原则也类似,它们没有24种设计模式那样华丽的身姿,但它们是程序

程序员七大面向对象设计原则

在没有了解到面向对象设计的7大原则前,我只是一只豆子!   但豆子终将会成长不是吗? 1.开闭原则:一个软件实体应当对扩展开放,对修改关闭.也就是说在所涉及一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为. 在开闭原则的定义中,软件实体可以指一个软件模块.一个由多个类组成的局部结构或一个读库的类. 抽象化是开闭原则的关键. 是添加新代码完成方法的重构  而不是修改源代码 声明: 本文源自 2.依赖倒转原则:高层模块不应该依赖低层模块,他们

里氏替换原则详解--七大面向对象设计原则(2)

里氏替换原则来源: 我们都知道面向对象有三大特性:封装.继承.多态.所以我们在实际开发过程中,子类在继承父类后,根据多态的特性,可能是图一时方便,经常任意重写父类的方法,那么这种方式会大大增加代码出问题的几率.比如下面场景:类C实现了某项功能F1.现在需要对功能F1作修改扩展,将功能F1扩展为F,其中F由原有的功能F1和新功能F2组成.新功能F由类C的子类C1来完成,则子类C1在完成功能F的同时,有可能会导致类C的原功能F1发生故障.这时就有人提出了里氏替换原则.里氏替换原则这项原则最早是在19

初识面向对象设计--七大原则概述

面向对象设计有以下几种原则 1.开闭原则 Open-Close Principle(OCP) 2.里氏替换原则 Liskov Substitution Principle(LSP) 3.单一职责原则 Single Responsibility Principle(SRP) 4.接口隔离原则 Interface Segregation Principle(ISP) 5.依赖倒置原则 Dependence Inversion Principle(DIP) 6.迪米特原则/最少知识原则 Law of