【问题标题】:OOP: Coupling the setting of a state with the showing of it?OOP:将状态设置与显示结合起来?
【发布时间】:2011-11-10 17:28:16
【问题描述】:

假设我有一个具有三种状态的类:全屏、窗口化和最小化。我的对象的状态存储为枚举类型,

typedef enum {
    StateFullScreen,
    StateWindowed,
    StateMinimized
} State;

如果每次更改State,我都调用两个方法:setState:showState:,我应该将这些操作合二为一吗?例如,覆盖普通合成的setState: 方法并让它根据状态调用正确的showState: 方法?还是应该让showState: 打电话给setState:

在面向对象的设计中,这些都是好的编程实践吗?

【问题讨论】:

    标签: objective-c oop coding-style


    【解决方案1】:

    您是否考虑过创建一个 ChangeState(...) 方法? 创建调用其他两个方法的第一遍重构很简单。然后我会通过进一步的重构来彻底清理它。

    【讨论】:

    • 我投了你一票,但我不认为我会走这条路,因为我不想在没有其他方法的情况下调用任何一种方法。
    • 然后将它们设为私有,并从 ChangeState() 调用。
    【解决方案2】:

    在我看来,最好在 setState 中完成所有工作,这是使用您的课程的人所期望的。

    我有一个会话类,它的状态包括连接、断开连接、在线和离线。如果我调用 setStatus,它还会调用委托方法并在新状态等于断开连接或离线时断开会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 2020-10-19
      • 2020-03-09
      • 2021-09-28
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多