首页 > 解决方案 > 应用程序设计,如何在不造成混乱的情况下调用远处类的方法?

问题描述

我有一个图形示例,所以你明白我的意思:

MasterClass 想使用 A、B 和 C 类,但是 B 在 A 里面,C 在 B 里面。所以我知道如何解决这个问题的两种方法是:

1.B类会有直接调用C类方法的方法,A类会有调用B方法(包括C方法)的方法,如图: 示例 1

2.在解决方案二中,每个类都有一个getter,它将返回它们所使用的类,因此其他类可以直接调用它们的方法,我的意思是,如果MasterClass想在C上使用方法,它将从Class调用方法getClassB() A 然后调用getClassC()方法: 在此处输入图像描述

可悲的是,我最终总是遇到这样的情况,所以我不知道这是设计时非常常见的情况,还是只是我不知道如何设计。在最后一种情况下,如果您能向我推荐材料,我将不胜感激,这样我就可以学习如何创建干净和模块化的程序,因为我的很多程序最终都会有很多相互关联的类。

标签: javaclassoopumlsoftware-design

解决方案


根据我的经验,我想简短的回答是,如果您的意思是 B 和 C 实际上是在 A 和 B 内部定义的(分别),那么不要在那里定义它们,而是作为“外部”的类,同时等级为Master和A。然后Master可以直接调用他们。

如您所知,拥有通过属性/ getter 公开其他类的类是可行的,但不遵循所谓的得墨忒耳定律,并且除其他问题外,这也是一种“功能嫉妒”。毕竟,你的类不是封装它们的内容,而是暴露它们。

一般来说,一个类应该知道另一个类只是为了在内部对它做一些事情。因此,如果 Master 需要 C 中的某些东西,这是通过两级嵌套定义的,那只是因为 B 上的某些方法将 C 的某些功能与 B 的某些功能汇总在一起,然后 A 上的某些方法会从 B 中汇总某些内容(因此 C ) 用它自己的东西......然后Master调用。

作为一项规则,我会说保持类不嵌套是最易于管理的,除非在特殊情况下。


推荐阅读