`

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

阅读更多

 

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

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的关系。

 

2
9
分享到:
评论
1 楼 liuqing_2010_07 2012-04-29  
不错,不适合初学者看。适合中级java工程师学习学习。能配一个例子,英文资料 就更好。这个可以作为一个专题讨论。想学好设计模式的人,可以结合这个去思考。想写出高质量程序的人,应该带着这样的思维去写程序。
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    面向对象的六大基本原则.md

    介绍面向对象(OOP)的六大基本设计原则,使用markdown格式编写,使用浏览器即可查看! 让我们一起new一个对象吧~O(∩_∩)O

    23种 设计模式---面向对象的基本原则

    在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计模式以及面向对象的基本原则。 面向对象的基本原则主要包括: 1. 单一职责原则(Single Responsibility ...

    面向对象基本原则PPT

    这个PPT讲述了面向对象的几个基本原则,很详细,还有代码示例

    面向对象设计三要素五原则六视点

    ### 面向对象设计六视点 除了上述三个要素和五个原则之外,面向对象设计还需要考虑六个视点,以确保设计的质量。 #### 复用(Reusibility) 软件设计中最重要的目标之一就是减少重复。通过细粒度的封装,可以提高...

    软件工程——面向对象六大设计要素

    软件工程面向对象设计要素总结六大设计原则 软件工程面向对象技术设计要素总结六大设计原则是软件工程中非常重要的一部分,它可以帮助软件开发者设计出更好的软件系统。以下是六大设计原则的详细解释: 一、单一...

    面向对象设计原则

    本文将深入探讨面向对象设计的六大原则,包括开放封闭原则、单一职责原则、依赖倒置原则、Liskov替换原则、迪米特法则以及接口隔离原则。 ### 1. 单一职责原则 (Single Responsibility Principle, SRP) 单一职责...

    面向对象程序设计与C++语言

    封装(Encapsulation)是面向对象编程的基本原则,它隐藏了对象内部的实现细节,只对外公开必要的接口。在C++中,访问修饰符(如public, private, protected)用于控制类成员的可见性,确保数据安全,防止不恰当的...

    面向对象的一般原则 六大原则

    面向对象设计的六大基本原则是软件开发领域中非常重要的概念,这些原则旨在提高代码的质量、可维护性和可扩展性。在本篇文章中,我们将详细介绍这六个原则,并通过具体案例加深理解。 ### 一、单一职责原则 (SRP, ...

    面向对象的设计原则 doc

    本文将详细探讨面向对象设计中的六大基本原则,并结合部分文本内容进行深入分析。 #### 一、开闭原则(Open-Closed Principle, OCP) **定义**:开闭原则指出,软件实体(如类、模块等)应该对扩展开放,对修改...

    61条面向对象设计的经验原则

    #### 面向对象设计基本原则 **原则一:** 面向对象设计应该关注于清晰地定义类及其责任。这意味着每个类都应该有明确的目的,并且只负责执行那些与之直接相关的任务。 **原则二:** 在面向对象设计中,尽量减少类...

    电子书《面向对象程序设计与Java语言》(第0.1版)

    6. **面向对象设计原则与设计模式**:第十六章提供了面向对象设计的原则和常用的设计模式,帮助开发者更好地组织代码和解决实际问题。 #### 特色亮点 与其他同类教材相比,《面向对象程序设计与Java语言》具有以下...

    61条Java面向对象设计的经验原则.

    ### Java面向对象设计的核心经验原则 #### 原则一:数据封装 - **原则**:所有数据都应该隐藏在所在的类的内部。 - **解释**:这是面向对象编程的一个基本原则,目的是保护数据不被外部直接访问,从而提高数据的...

    面向对象的框架设计 new

    **框架**和**组件**都是面向对象设计中常用的复用手段,但它们之间存在一定的差异: - **组件**:组件是软件开发中的最小可复用单元,通常是解决某一特定问题的小型模块。组件通常具有高度的独立性,可以单独进行...

    面向对象程序设计B课程考核

    本课程考核的目标是设计并实现一个简单的图形绘制系统,主要涉及面向对象的设计原则和技术,具体要求如下: 1. **设计几何抽象类**:创建一个名为`Geometry`的抽象基类,该类定义了绘制、读取和写入等纯虚函数。...

    61条面向对象分析设计的经验原则.txt

    本文旨在对《61条面向对象分析设计的经验原则》中的关键点进行详细的解读与分析,帮助读者更好地理解面向对象设计的核心思想及其应用实践。 #### 核心原则解析 1. **原则的重要性:** - **概述:** 文档开头提到...

    C++面向对象程序设计-电子教案

    《C++面向对象程序设计-电子教案》是一个深入学习C++编程的重要资源,它涵盖了C++语言的核心概念、面向对象编程的基本原则以及实际应用。在本文中,我们将详细探讨C++面向对象编程的关键知识点,包括类与对象、封装...

    61条Java面向对象设计的经验原则.doc

    ### Java面向对象设计的核心原则与实践 #### 一、封装原则 **原则1:所有数据都应该隐藏在所在的类的内部。** - **解释**: 封装是面向对象编程的一个核心特性,它指的是将数据和对数据的操作绑定在一起,并对外部...

Global site tag (gtag.js) - Google Analytics