top
Loading...
Adapter在J2SE事件處理中的應用
天極IT資訊短信服務 電腦小技巧
資費:包月5元
手機:
介紹:細處著手,巧處用功。高手和菜鳥之間的差別就是:高手什么都知道,菜鳥知道一些。電腦小技巧收集最新奇招高招,讓你輕松踏上高手之路。


Java關鍵字導航
網絡 J2ME 手機游戲 JavaCard Struts 游戲 分析器 JAAS EJB JavaMail 設計模式 J2EE


1.Adapter模式理論

Adapter模式又稱變壓器模式,關于該模式的基本概念請參考其他書籍或資料;這里我們只粗略討論該模式兩大實現方法的區別:基于類的Adapter模式和基于對象的Adapter模式。

基于類的Adapter模式的一般結構如下:Adaptee類為Adapter的父類,Adaptee類為適配源,適配目標(接口)也是Adapter的父類;基于類的Adapter模式比較適合應用于Adapter想修改Adaptee的部分方法的情況。基于對象的Adapter模式的一般結構如下:Adaptee類對象為Adapter所依賴,適配目標(接口)是Adapter的父類;基于對象的Adapter模式比較適合應用于Adapter想為Adaptee添加新的方法的情況。但在Adaptee類的方法與Adapter類的方法不同名而實現相同功能的情況下,我們一般也使用基于對象的Adapter模式,在J2SE事件處理中,我們就大量使用了基于對象的Adapter模式。

2.J2SE中的事件處理

J2SE中的事件處理代碼示例如下:

public class WebFormDesigner extends JFrame {
void jbInit() throws Exception {
text.addActionListener(new WebFormDesigner_text_actionAdapter(this));
}

void text_actionPerformed(ActionEvent e) {
TextDialog createText = new TextDialog();
createText.setVisible(true);
createText.setTitle("TEXT");
createText.setBounds(100, 100, 500, 300);
createText.setModal(true);
createText.show();
}
}

class WebFormDesigner_text_actionAdapter implements java.awt.event.ActionListener {
WebFormDesigner adaptee;
WebFormDesigner_text_actionAdapter(WebFormDesigner adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.text_actionPerformed(e);
}

}

在實際編程時,text_actionPerformed方法由程序員自己實現(彈出新的對話框),而WebFormDesigner_text_actionAdapter類是由開發環境依據基于對象的Adapter模式自動生成的。

3.Adapter模式與代碼分析

由上面的分析可見,WebFormDesigner在本例中是Adaptee, WebFormDesigner_text_actionAdapter在本例中是Adapter, java.awt.event.ActionListener在本例中是適配目標。

適配目標為一接口,代碼如下:

public interface ActionListener extends EventListener {

/**
* Invoked when an action occurs.
*/
public void actionPerformed(ActionEvent e);
}

適配目標中只有一個方法:actionPerformed()。由于WebFormDesigner_text_actionAdapter 實現了java.awt.event.ActionListener,所以要求實現actionPerformed()方法。

WebFormDesigner_text_actionAdapter實現actionPerformed()方法是引用了WebFormDesigner這個adaptee而完成的。從代碼中可以看出,WebFormDesigner是WebFormDesigner_text_actionAdapter的方法的參數,所以WebFormDesigner_text_actionAdapter依賴WebFormDesigner。

Adaptee類(WebFormDesigner)的方法(text_actionPerformed)與Adapter類(WebFormDesigner_text_actionAdapte)的方法(actionPerformed)不同名而實現相同功能,這就是我們上面分析的基于對象的Adapter模式。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗