我对这些代码行感到困惑:
public class AL extends Frame implements WindowListener,ActionListener {
Button b;
b = new Button("Click me");
b.addActionListener(this);
...
我理解的是,框架被设置为事件处理程序,以及#34;"按钮。 是否可以设置事件处理程序,它们本身就是gui的一部分而与事件源分开?(我的意思是按钮类可能应该处理它的事件。) 正如我所见,代码中的许多事件都是由jframe处理的。它背后有什么特别的用途吗? 以前谢谢你的时间!
答案 0 :(得分:3)
你看到这样的代码的原因(我已经看过很多,我承认),是一些程序员,特别是那些编写AWT和/或Swing代码的程序员,往往会把大量的GUI逻辑放到一个单独的类中。原因各不相同,但有几个常见的原因是:
根据我的经验,很多GUI代码都是这样的。这是一种很好的编程方式吗?绝对没有!
您阅读的任何方法书都会告诉您相同的内容。这些课程打破了良好设计的每一个可能原则。最基本的例子是SRP(http://en.wikipedia.org/wiki/Single_responsibility_principle)。
此外,处理事件作为类方法的GUI类往往不成比例,不幸的是,几千行代码的类是我在不同项目和公司中多次看到的。
不要陷入这个陷阱。保持你的类简短,为每个内部组件设置一个不同的类,除非它是一个初始化非常简单的常规组件(在这种情况下,最好让工厂类进行初始化)。
当处理程序中的代码行很少时,将事件处理保留在匿名类中,当代码超过一行或两行代码时,在单独的类中保持事件处理。
简而言之,GUI代码与其他OO代码没有什么不同,并且应遵循相同的原则和方法。