我什么时候应该将GUI类拆分成几个类?

时间:2016-03-17 18:37:09

标签: java oop user-interface

我正在研究什么是基本上我用Java编写的第一个GUI程序,到目前为止它对我来说效果很好。一切都运行顺利,但我想确保我使用并理解可靠的编程原则。

对于我的GUI类,我有大约300行代码(我已经理解的代码非常小)。我现在一直在使用SWT和这个GUI窗口。我有四个标签项,每个标签项包含一组不同的小部件供使用。我打算为每个标签创建一个类来处理它们各自的后端要求。

在我搜索现有问题时,我发现多次引用单一责任原则。据我所知,每班一个窗口符合这个原则。什么时候(如果有的话)我会将GUI分成多个窗口之外的多个类?

2 个答案:

答案 0 :(得分:0)

设计原则是编写优秀代码的指南。 Single responsibility principle说我们应该只为一个班级提供单一的变革来源。

  1. 我们如何知道课堂变革的来源是什么?
  2. 课堂上可以改变什么?
  3. 这些问题的答案在于团队直接与最终用户联系。为此,务必通过基本的简单设计尽快与客户进行交流。很明显,我们会被要求添加更多新功能或添加新要求。

    上述过程将让我们知道我们班级正在履行的职责范围正在发生变化。我们必须将这些行为放在不同的类中。现在我们现有的类应该通过以下方式与新创建的类通信。抽象。这是dependency inversion。现在,我们的班级不再依赖于改变的实体或可能以高概率发生变化的实体。在抽象中,只放置我们旧班所需的行为。实现细节放在新创建的具体类中,这些类扩展了我们创建的Abstraction类。

    从一开始,即使在(它们可能永远不会改变)的情况下,试图弄清楚所有责任并将它们放在单独的类中会使代码分散。

    大班很冗长。它们不可浏览,它们很有可能无意地受到影响。

答案 1 :(得分:0)

关于您何时想要将内容分解为单独的类的具体问题: 我们假设你写了一本地址簿。您可能希望在应用程序的各个位置显示联系人的详细信息。或者一次呈现多个联系人。这可以通过编写一个单独的类来完成,例如ContactDetailsPanel

一般来说,大多数常用模式也适用于GUI类:不要重复自己,单一责任等等。编写GUI代码时我想指出的一种模式是MVC: Model-View-Controller。它主要是关于分离业务逻辑,表示和数据。

你可能想看看SWT中哪些东西可以得到单独的类。