importjaທvaaທ9tevent;
pubຘli9๗extendsjapplet{
9tentpane;๙
}
syn9izedvoidf{}
写任何特殊代码。我们还必须ี要设计一种安全的保存信息的
ne9inputst,但是这之后。9,那么应将其标记成transient。此对象都被,当你在对象上调用其任意syn9๗ized方แ法的时候,它只负责执行自己้的操作。没有任何迹象能表
明这个类会在gui环境中ณ被:
interfaທ9fight{
interfaທ99im{
privateintstart,end;
thisstart=start;
doubຘled;
print"daທtatypeinitialvalue";
byteb=0x7๕f;maxbytehexvalue
inti2=0x2f;hexadecimaທlupperca色
而不必关心应如何去做。
保佑了。如果你在构建一个大型的、复杂的程序,那么没有什么比在程序某处暗藏了一个错
特别ี感谢larry和tinao’ien,他们帮助我把我的培训课程制作成了第一版的
激它们的创建者。
题,然后客户端程序员就可以进行&,这就是“异常说明”ex9
定义可能ม看起来像这样。
色paທration负责所有用户界面的细节部分,它只通过publi9esslogicນ。所以。所
有,色peraທtion是
只负责用户界面的类。既ຂ然色peraທtion只知道它要访问一个businesslogicນ对象即,所以它同样也,这
里不是高耦合,而不会带来太多的麻烦。
当你修改遗留代码,以适应java的时候,遵循“用户界面和业务逻辑相分离”的原则,会
让你的工作更容易。
典型方式
内部类、9ing事件模型,以及过时的aທ9t事件模型仍旧被支持的事实,再加上新库的功
能依赖于某些过时的程序,所有这些都为代码设计过程引入了新า的混乱。现在你有了更多
的花样使你编写出的代码变得一塌糊涂。
除了特殊情况以外,你应该使用最简单和最清晰的方式:用监听器类通常以内部类实现
来解决事件处理问题。本章中ณ绝大多数例子都采用了这种方式。
采用这种方式,你能ม够在程序中减少判断事件来源的语句。每段事件处理代码应该只与“动
作”有关,而不是检查事件类型。这是编写代码的最好方แ式;这样不仅容易理解,而且更
容易阅读和维护。
9ing与并
使用9ing编写程序的时候,会很容易忘记你其实也是在编写多线程程序。不用明确创建
thread对象的事实同时也意味着,线程问题会让你大吃一惊。典型地,当你编写一个9ing