快速业务通道

Java语言结构性模式之变压器模式介绍 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
性模式之变压器模式介绍(4) 时间:2010-12-17

这些都是变压器模式使用的实际例子。值得指出的是,WindowAdapter的建立者们不可能预见到你所要使用的目标接口, 因此WindowAdapter不可能实现你的目标接口。但是,在考察了这些变压器类的使用范围之后,我们会发现, WindowAdapter只需实现WindowListener的接口即可,也就是说,目标接口被省略了。请见下面的解释。

抽象类WindowAdapter是变压器模式的一个例子

抽象类WindowAdapter是为接受视窗的事件而准备的。此抽象类内所有的方法都是空的。 使用此类可以很方便地创立listener对象。置换(Override)你所感兴趣的那个事件所对应的方法。 如果你不使用此抽象类,那么你必然规律要实现WindowsListener接口,而那样你就不得不实现所有接口中的方法, 即便是你不需要的事件所对应的方法,你也要给出一个空的方法,而这显然不方便。

显然,抽象类WindowAdapter的目标接口可以选得与源接口一样,而不影响效果。 这就解释了为什么目标接口不出现在WindowAdapter类图(见下面)里。

Java语言结构性模式之变压器模式介绍 - 编程入门网

图3. 本例子SwingUI类与WindowAdapter实例变压器模式的类图定义

SwingUI类的代码如下。

import java.awt.Color; import java.awt.BorderLayout; import java.awt.event.*; import javax.swing.*; class SwingUI extends JFrame implements ActionListener {   JLabel text, clicked;   JButton button, clickButton;   JPanel panel;   private boolean m_clickMeMode = true;   Public SwingUI()   {    text = new JLabel("我很高兴!");    button = new JButton("理我");    button.addActionListener(this);    panel = new JPanel();    panel.setLayout(new BorderLayout());    panel.setBackground(Color.white);    getContentPane().add(panel);    panel.add(BorderLayout.CENTER, text);    panel.add(BorderLayout.SOUTH, button);   }   public void actionPerformed(ActionEvent event)   {      Object source = event.getSource();      if (m_clickMeMode)      {       text.setText("我很烦!");       button.setText("别理我");       m_clickMeMode = false;      }      else      {       text.setText("我很高兴!");       button.setText("理我");       m_clickMeMode = true;      }   }   public static void main(String[] args)   {    SwingUI frame = new SwingUI();    frame.setTitle("我");    WindowListener listener = new WindowAdapter()    {     public void windowClosing(WindowEvent e)     {      System.exit(0);     }    };    frame.addWindowListener(listener);    frame.pack();    frame.setVisible(true);   } }

代码清单7. SwingUI类的源代码。红色的代码就是使用WindowAdapter的无名内部类。

Java语言结构性模式之变压器模式介绍(5)

时间:2010-12-17

显然,由于无名内部类是继承自WindowAdapter抽象类,因此只需置换(override)掉我们需要的方法, 即windowClosing()而不必操心WindowListener的其它方法。

本例子在运行时的样子:

Java语言结构性模式之变压器模式介绍 - 编程入门网

图4. SwingUI类在运行时的样子。单击命令键“理我”就变成下图的样子。

Java语言结构性模式之变压器模式介绍 - 编程入门网

图5. 再单击命令键“别理我”就会回到前图的样子。

利用变压器模式指方为圆

中国古代有赵高指鹿为马的故事。鹿与马有很多相似之处,没见过的人本就分辨不清,指一指可能没什么

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号