我有一个类可以从GUI调用或者形成非图形环境(批处理模式)
在批处理模式下执行时,“告诉”代码的GUI相关部分不能执行的最方便的最佳实践方法是什么。
我想到像
这样的东西 public MyMethod()
{
[@TAG: DOTHIS_ONLY_IF_GUIMODE]
ShowPanels();
....
}
GUI_MODE_ACTIVATED在运行某处会被设置为true或false,具体取决于从哪里调用程序
我想避免丑陋的追踪if / else的东西散布在我的代码中
我的小拇指告诉我AOP是要走的路(但如果我设法找到一个更简单的替代方案,我会去寻找它)
那么,最简单的方法是什么?
更新 正如大多数贡献者指出的那样,将GUI代码与业务代码分离是一条经验法则,但即使没有涉及GUI ,我仍然有兴趣知道如何做到这一点(即,两个不同的两种不同环境的BATCH模式,例如)
答案 0 :(得分:3)
我认为最好的办法是将特定于GUI的代码从类中取出,并实现在类处理中的关键时刻触发的事件。当GUI调用时,GUI代码订阅这些事件并“做正确的事情”。批处理代码忽略了事件,一切都很好。
答案 1 :(得分:0)
在批处理模式下执行时,“告诉”代码的GUI相关部分不能执行的最方便的最佳实践方法是什么。
这就是您将业务逻辑问题与UI问题分开的原因。
那么,SIMPLEST和最简单的方法是什么?
将业务逻辑问题与UI问题分开。
答案 2 :(得分:0)
最简单,最直接的方法是使用if
语句。
一种不那么简单但更有条理的方法是将ShowPanels
方法抽象化,然后派生出两个类:一个用于GUI模式,另一个用于批处理模式。
答案 3 :(得分:0)
Add Aspects to Object Using Dynamic Decorator 。
您的课程应仅涉及业务逻辑而非演示(GUI或批处理等)。在运行时,您可以根据需要将表示(GUI或非GUI)代码附加到类的对象。
无需在类定义中使用丑陋的属性代码。