0

我有以下场景:我在 Gui 层中有 Button 和 PreviewButton,它们有一个名为 BasedButton 的公共部分。Button只知道IButtonPresenter,ButtonPresenter的接口。按钮应该没有逻辑,演示者可以包含一些逻辑。问题是 PreviewButton 是一个非常简单的类,它不需要任何演示者。除了一件事: hasLed() 函数根据按钮类型(简单的开关情况)确定 Button 和 PreviewButton 是否有 LED。这个常见的 hasLed() 函数应该在哪里? 我的想法:

  1. PreviewButton 也应该有presenter,hasLed() 函数应该在Button 和PreviewButton 的presenter 的共同部分。问题:我应该只为这一个功能介绍演示者,这似乎是过度设计。

  2. 把它放在这个逻辑:hasLed() 到 BasedButton(在 Button 和 PreviewButton 的共同部分)。问题:我试图避免在我的母语 Gui 中加入任何逻辑。

  3. 创建一些命名空间(或使用按钮类型枚举命名空间!)并将这个简单的函数作为内联函数放入其中。问题:“逻辑”被放置在一个“奇怪”而不是预期的类中。

  4. 将 hasLed() 函数放入我的演示者层中的一个管理器类中。优点:所有原生 Gui 类都可以访问管理器接口。并且代码保持通用(没有代码重复)。缺点:我的经理有这样的功能似乎有点奇怪。

  5. 其他想法?

也许现在我会选择第四个...

4

1 回答 1

0

我会选择选项 1。它不是过度设计(而试图在界面级别上区分 PreviewButton 和 Button 对我来说确实看起来过度设计),它只是样板,但你避免了不必要的设计复杂化那样。

于 2018-10-20T16:09:15.047 回答