面向对象设计的六大基本原则:
1)开闭原则
2)里氏代换原则
3)依赖倒转原则
4)接口隔离原则
5)迪米特法则
6)合成/聚合复用原则
依次解释六大基本原则:
1) 开闭原则:
即面向扩展开放,面向修改封闭,也就是说系统支持扩展,但是不支持修改。
为什么这么做?
在开发阶段,我们都知道,如果对一个功能进行扩展,如果只是一味地对方法进行修改,可能会造成一些问题,诸如 可 能会引入新的bug,或者增加代码的复杂度,对代码结构造成破坏、冗余,还需要重新进行全面的测试。那么该怎么解决这些问题?很简单,这就需要系统能够支持扩展,只有扩展性良好的系统,才能在不进行修改已有实现代码的基础上,引进新的功能。
我们应该怎么做?
要做到开闭原则,就需要多使用抽象类或者接口,将相似的类进行抽象,将公有的功能引入到抽象类中,这样在进行扩展时,只需要依据抽象类,生成新的子类即可。
2) 里氏代换原则:
即任何使用基类的地方,都能够使用子类替换,而且在替换子类后,系统能够正常工作。
为什么这么做?
采用里氏替代原则可以增强程序的健壮性,版本升级的时候可以保持非常好的兼容性,即使增加子类,原有的子类也可以继续运行。
我们应该怎么做?
在引用基类的地方就能引用子类实现
3) 依赖倒转原则:
即我们的client类要依赖于抽象,而不是依赖于具体,也就是我们经常听到的“要面向接口编程”。
为什么这么做?
减少类间的耦合性,提高代码的可读性和可维护性。
我们应该怎么做?
a、每个类尽量都有接口和抽象类,或者抽象类和接口都有。
b、变量的表面类型尽量是接口或者是抽象类。
c、任何类都不应该从具体类派生。(但是在做二次开发的时候,我们无法获得高层代码的时候例外),规则不是绝对的。
d、尽量不要覆写基类已经实现好的方法。
4) 接口隔离原则:
即应该将接口粒度最小化,将功能划分到每一个不能再分的子角色,为每一个子角色创建接口,通过这样,才不会让接口的实现类实现一些不必要的功能。
为什么这么做?
避免让接口的实现类实现一些不必要的功能
我们应该怎么做?
建立单一的接口,不要建立臃肿的庞大的接口,也就是说接口的方法尽量少。
5) 迪米特法则:
即尽量减少类之间的依赖关系.
为什么这么做?
降低类之间的耦合。
我们应该怎么做?
在应用中最直接的实现就是在两个类中间建一个中介类。但是这样可能会造成中介类的澎爆。
6) 合成/聚合复用原则:
即少用继承,多用组合。
为什么这么做?
优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。
我们应该怎么做?
使用组合也就是将两个类之间建立关联关系,将一个类做为另一个类的属性。
继承与组合主要是区分两个角色之间是"is a"还是"has a"的关系,如果是"is a"就需要使用继承,而如果是"has a"就需要使用组合。
例如笔可以分为钢笔和油笔,这就是is a的关系,但是油笔与笔芯就是has a的关系。
分享到:
相关推荐
介绍面向对象(OOP)的六大基本设计原则,使用markdown格式编写,使用浏览器即可查看! 让我们一起new一个对象吧~O(∩_∩)O
在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计模式以及面向对象的基本原则。 面向对象的基本原则主要包括: 1. 单一职责原则(Single Responsibility ...
这个PPT讲述了面向对象的几个基本原则,很详细,还有代码示例
### 面向对象设计六视点 除了上述三个要素和五个原则之外,面向对象设计还需要考虑六个视点,以确保设计的质量。 #### 复用(Reusibility) 软件设计中最重要的目标之一就是减少重复。通过细粒度的封装,可以提高...
本文将深入探讨面向对象设计的六大原则,包括开放封闭原则、单一职责原则、依赖倒置原则、Liskov替换原则、迪米特法则以及接口隔离原则。 ### 1. 单一职责原则 (Single Responsibility Principle, SRP) 单一职责...
#### 三、面向对象设计的关键原则 **面向对象设计的原则**: - **封装**:将数据和操作数据的方法绑定在一起,隐藏内部实现细节,只暴露对外接口。 - **继承**:允许创建一个类(子类)继承另一个类(父类)的属性...
封装(Encapsulation)是面向对象编程的基本原则,它隐藏了对象内部的实现细节,只对外公开必要的接口。在C++中,访问修饰符(如public, private, protected)用于控制类成员的可见性,确保数据安全,防止不恰当的...
面向对象设计的六大基本原则是软件开发领域中非常重要的概念,这些原则旨在提高代码的质量、可维护性和可扩展性。在本篇文章中,我们将详细介绍这六个原则,并通过具体案例加深理解。 ### 一、单一职责原则 (SRP, ...
本文将详细探讨面向对象设计中的六大基本原则,并结合部分文本内容进行深入分析。 #### 一、开闭原则(Open-Closed Principle, OCP) **定义**:开闭原则指出,软件实体(如类、模块等)应该对扩展开放,对修改...
#### 面向对象设计基本原则 **原则一:** 面向对象设计应该关注于清晰地定义类及其责任。这意味着每个类都应该有明确的目的,并且只负责执行那些与之直接相关的任务。 **原则二:** 在面向对象设计中,尽量减少类...
6. **面向对象设计原则与设计模式**:第十六章提供了面向对象设计的原则和常用的设计模式,帮助开发者更好地组织代码和解决实际问题。 #### 特色亮点 与其他同类教材相比,《面向对象程序设计与Java语言》具有以下...
### Java面向对象设计的核心经验原则 #### 原则一:数据封装 - **原则**:所有数据都应该隐藏在所在的类的内部。 - **解释**:这是面向对象编程的一个基本原则,目的是保护数据不被外部直接访问,从而提高数据的...
**框架**和**组件**都是面向对象设计中常用的复用手段,但它们之间存在一定的差异: - **组件**:组件是软件开发中的最小可复用单元,通常是解决某一特定问题的小型模块。组件通常具有高度的独立性,可以单独进行...
本课程考核的目标是设计并实现一个简单的图形绘制系统,主要涉及面向对象的设计原则和技术,具体要求如下: 1. **设计几何抽象类**:创建一个名为`Geometry`的抽象基类,该类定义了绘制、读取和写入等纯虚函数。...
本文旨在对《61条面向对象分析设计的经验原则》中的关键点进行详细的解读与分析,帮助读者更好地理解面向对象设计的核心思想及其应用实践。 #### 核心原则解析 1. **原则的重要性:** - **概述:** 文档开头提到...
《C++面向对象程序设计-电子教案》是一个深入学习C++编程的重要资源,它涵盖了C++语言的核心概念、面向对象编程的基本原则以及实际应用。在本文中,我们将详细探讨C++面向对象编程的关键知识点,包括类与对象、封装...
### Java面向对象设计的核心原则与实践 #### 一、封装原则 **原则1:所有数据都应该隐藏在所在的类的内部。** - **解释**: 封装是面向对象编程的一个核心特性,它指的是将数据和对数据的操作绑定在一起,并对外部...