我有以下场景:我在 Gui 层中有 Button 和 PreviewButton,它们有一个名为 BasedButton 的公共部分。Button只知道IButtonPresenter,ButtonPresenter的接口。按钮应该没有逻辑,演示者可以包含一些逻辑。问题是 PreviewButton 是一个非常简单的类,它不需要任何演示者。除了一件事: hasLed() 函数根据按钮类型(简单的开关情况)确定 Button 和 PreviewButton 是否有 LED。这个常见的 hasLed() 函数应该在哪里? 我的想法:
PreviewButton 也应该有presenter,hasLed() 函数应该在Button 和PreviewButton 的presenter 的共同部分。问题:我应该只为这一个功能介绍演示者,这似乎是过度设计。
把它放在这个逻辑:hasLed() 到 BasedButton(在 Button 和 PreviewButton 的共同部分)。问题:我试图避免在我的母语 Gui 中加入任何逻辑。
创建一些命名空间(或使用按钮类型枚举命名空间!)并将这个简单的函数作为内联函数放入其中。问题:“逻辑”被放置在一个“奇怪”而不是预期的类中。
将 hasLed() 函数放入我的演示者层中的一个管理器类中。优点:所有原生 Gui 类都可以访问管理器接口。并且代码保持通用(没有代码重复)。缺点:我的经理有这样的功能似乎有点奇怪。
其他想法?
也许现在我会选择第四个...