0

我有一个 X 类和 Y 类,它们基本上是 X 的集合。我想编写一个将 X 添加到特定集合 Y 的方法。此方法将更改 X 上的某些状态,当然还有 Y 上的状态。我的问题是在 X 类中最好在哪里使用此方法(因此该方法将是 x.addToY(y)) 还是应该继续 Y 类 (y.addX(x))?我应该考虑什么?

4

3 回答 3

1

在您的情况下,它非常简单,但想象一下它Y可以容纳其他不同的X元素,比如类型的元素ABC。这些类型是否应该知道如何添加到集合中Y?答案是否定的,但如果是这样,您将不得不为AddToY这些类型中的每一种实现一个方法,这一点都不好。集合Y知道如何将项目添加到自身,无论这些项目是什么类型。这被称为关注点分离,它主要指出每个类型或实体都应该具有其关注的功能。在这种情况下,您可以看到一个集合应该能够向自己添加项目,但是某个类型X可能与集合无关,因此,它不应该具有将自身添加到某个集合的功能。希望这可以帮助您理解。

于 2013-03-23T22:10:05.660 回答
0

考虑一下,如果您将方法放在 X 中以将其自身添加到 Y,而 Y 包含 X 的集合,那么 X 必须知道 Y,而 Y 必须知道 X;而如果你把方法放在 Y 中,那么 Y 需要知道 X,但 X 不需要知道 Y。你避免了循环依赖。

于 2013-03-22T21:54:51.740 回答
0

除了这种方法与 Y 类的常识关联之外,另一个考虑因素是并发性:虽然这最初可能是一个单线程应用程序,但您(或其他人)将来可能会扩展类 Y 以启用同步的多线程集合访问,在这种情况下,在 Y 中肯定会更方便,addX以便多线程子类可以通过其并发支持覆盖该方法。

于 2013-03-22T22:01:40.977 回答