首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面向对象的设计原则-"迪米特原则"

面向对象的设计原则-"迪米特原则"

作者头像
别明天就今天吧
发布于 2020-09-07 11:32:39
发布于 2020-09-07 11:32:39
4150
举报

Least Knowledge Principle LKP,"迪米特原则":一个对象应该对其他对象有最少的了解。通俗的说就是,一个类应该对自己需要耦合或调用的类知道的最少,你(被耦合或调用的类)的内部是如何的复杂和我没关系,我就知道你提供这么多的public方法,我就调用这么多方法,其他的我一概不关心。

迪米特原则的核心就是解耦合,它对类的低耦合提出一些要求:

  1. 只和朋友交流。 朋友的定义:出现在成员变量、方法的输入输出中的类称为朋友类,而出现在方法体内部的类不属于朋友类。

以上代码中,Teacher类与入参GroupLeader为朋友关系,但是与方法中的Girl也有了交流,破坏了Teacher类的健壮性,方法时类的一个行为,类竟然不知道自己的行为与其他类产生关联,违反了迪米特原则,下面进行一次修改。

这样Teacher类不与Girl类进行耦合,提高了代码健壮性。

2.朋友间是有距离的。

朋友不要把太多的类暴露出来,比如一个方法需要朋友.a()+朋友.b()+朋友.c()才可以实现,这样的话在朋友类创建一个新方法e包含a、b、c,调用方只需要调用朋友的e方法即可,而不是把abc都暴露出去。

尽量不要对外公布太多的public方法和非静态的public变量,多使用private、protected等访问权限。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 别明天就今天吧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c语言从入门到实战——C语言数据类型和变量
本文基于VS2022,将介绍一系列的C语言数据类型和变量,让读者对C语言有一个初步的了解,并对后续的学习做下铺垫。
鲜于言悠
2024/03/20
3880
c语言从入门到实战——C语言数据类型和变量
C语言基础语法
风中的云彩
2024/11/07
1730
初识C语言(下)
本章内容为初始C语言下半部分,将一些C语言的常见概念进行阐述并不会深层次的探究,后续会深入讲解C语言的,适合初学者能够初步认识到C语言及其常见的概念。高校教育较为注重素质教育和现在的公司需求还是有一定的差距,这篇文章可以为初学C语言的初学者们提供参考,如果你对C语言的整体知识不太了解,可以读一读笔者的文章,带你零基础学透C语言。
四念处茫茫
2025/01/25
1480
初识C语言(下)
C语言——B/数据类型和变量
自定义类型包括:数组、结构体(struct)、枚举(enum)、联合体(union)。
用户11015888
2024/03/11
2760
C语言——B/数据类型和变量
初识C语言·2
signed和unsigned都是C语言中的关键字,它们的作用是决定字符或者整型的正负号。
_lazy
2024/10/16
2050
初识C语言·2
第2讲:C语言数据类型和变量
使用 整型类型来描述整数,使用 字符类型来描述字符,使用 浮点型类型来描述小数。
用户11290648
2024/09/25
3210
第2讲:C语言数据类型和变量
关于我、重生到500年前凭借C语言改变世界科技vlog.2——C语言数据类型和变量
C语言的数据类型多种多样,类型不仅是我们了解数据的开始,也是数据初始化、函数自定义等的操作,编译器只有知道了数据的类型,才能进行相应的操作
DARLING Zero two
2024/11/19
1120
关于我、重生到500年前凭借C语言改变世界科技vlog.2——C语言数据类型和变量
c语言中数据类型和变量
char是否有符号取决于编译器的实现,大部分的编译器上 char = signed char
Undoom
2024/09/23
1470
C语言基础
“知己知彼,百战百胜”,大学计算机专业接触的第一门专业课就是C语言,那么什么是C语言呢?人和人之间可以用汉语、英语进行交流,那人和计算机之间应该如何交流呢?这个时候就需要计算机语言。C语言就是常见的计算机语言中的一种,还有Java、C++等计算机语言。
用户11352420
2024/11/07
1870
C语言基础
【C语言】数据类型和变量
C语言提供了丰富的数据类型来描述生活中的各种数据。使用整型类型来描述整数,使用字符类型来描述字符,使用浮点型类型来描述小数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。
zxctscl
2024/09/24
2520
【C语言】数据类型和变量
【C语言】数据类型与变量
C语言原来并没有为布尔值单独设置一个类型,而是使用整数 0 表示假,非 0 表示真。
云边有个稻草人
2024/10/21
1760
【C语言】数据类型与变量
完全入门C语言
C语言是一门通用的计算机编程语言,广泛应用于底层开发。其设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。有良好的跨平台的特性。 同时C语言还是面向过程的编程语言,这与JAVA C++等面向对象的编程语言有所不同。 目前主流的C语言编译器有:GCC Clang MVSVC等
Yui_
2024/10/15
2850
完全入门C语言
C语言:基础知识
通常,我们使用英语、中文等语言来进行两个人之间的交流。这意味着当我们想要和他人进行交流时,我们需要一种语言来表达自己的感受。同样的,当我们想要和计算机进行交流时,我们也需要一种语言,可以通过该语言向计算机提供信息,传达指令,我们称该语言为计算机语言。
小陈在拼命
2024/02/17
4090
C语言:基础知识
C语言的数据类型和变量-学习笔记
今天上课时,老师和我们说学习编程和代码是为了解决未来生活中的问题,写出的代码是为了能够描述现实世界。欧克,接下来将和大家一起学习C语言相关知识。希望对大家能够有所帮助!!!
LonlyMay
2024/10/21
1210
C语言的数据类型和变量-学习笔记
C语言——A/概念
这是我挖的新坑系列之《C语言的学习》,用来记录学习C语言的过程,以后星期五上传一篇文章,欢迎铁汁来喷!!!
用户11015888
2024/03/11
1770
C语言笔记---(2)基本语法
这里有一个主函数,主函数他是必不可少的,一个C程序有且只有一个主函数,即main函数。在最新的C标准中,main函数前的类型为int而不是void。
是小北a
2022/03/28
1K0
C语言笔记---(2)基本语法
轻松拿捏C语言——数据类型和变量
在C语言中含有许多丰富的数据类型,比如用整形类型来描述整数,用浮点类型来描述小数,用字符型来描述字符。
用户11162265
2024/06/14
1660
轻松拿捏C语言——数据类型和变量
【C语言】数据类型和变量
布尔类型的使⽤得包含头⽂件 <stdbool.h> 布尔类型变量的取值是:true或者false.
大耳朵土土垚
2024/03/13
1280
【C语言】数据类型和变量
【C】 C语言入门
如果觉的博主的文章还不错的话,还请点赞,收藏,关注支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。
阿伟@t
2023/10/10
1.3K0
【C】 C语言入门
【C生万物】C语言数据类型、变量和运算符
C语言提供了了丰富的数据类型来描述生活中的各种数据。 C语言提供的一下数据类型:
爱敲代码的小杨.
2024/05/07
1960
【C生万物】C语言数据类型、变量和运算符
相关推荐
c语言从入门到实战——C语言数据类型和变量
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档