gpt4 book ai didi

OO设计中的耦合

转载 作者:行者123 更新时间:2023-12-02 09:10:19 25 4
gpt4 key购买 nike

我有两个对象。一个 session 对象和一个操作对象( session 中提出的操作)。行动也可以独立于 session 而存在。我有两种方法将提出的行动链接到 session :

  1. 我有一个关于 session 的方法传入 Action 对象,例如“addToMeeting(操作操作)”。在 session 的内部然后我将操作链接到 session 。对于这种方法,虽然 session 对象需要了解的并使用 Action 上的方法对象因此变得耦合。
  2. 有一个我刚刚经过的 session 方法要链接的操作编号,例如如“addToMeeting(int actionID)”。现在很好 session 对象没有需要了解有关 Action 的任何信息但是......现在代码添加了 session 行动需要知道如何获取action ID所以有从此转向“ session .addToMeeting(操作)”到这“meeting.addToMeeting(action.getID())”。

对于良好的 OO 设计,应该使用哪种方法?或者还有第三种方法......

最佳答案

如果您计划链接到 Meeting 实例的唯一想法是操作,那么让 Meeting 了解 Action 似乎是最合适的,而不是相反。

Actions 类操作 Meeting 的内部结构会破坏封装性,并且通常会使维护此类代码变得更加困难。因此,在这种情况下,我将在 Meeting 上公开一个方法 addAction(Action a)

但是,如果还有其他内容可以与 session 相关联,您可能需要考虑抽象“ session 项目”的概念。

您可以定义一个接口(interface),例如 IMeetingItem,它公开了必要的信息,而不是让 Meeting 了解 Action,反之亦然。 Meeting 需要链接到此类项目。然后,Action 将实现 IMeetingItem,从而可以执行以下操作:

meeting.addItem( action );  // action treated as an IMeetingItem in this context
<小时/>

请注意,在这两种方法中,Meeting 类负责向自身添加项目的功能,而不是让添加的项目操纵 session 的内部表示。

关于OO设计中的耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4540037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com