Android學習按鍵事件監聽與Command模式

來源:互聯網
上載者:User

  Android學習按鍵事件監聽與Command模式

 

一 Command模式

意圖:

    將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;

  對請求排隊或記錄請求日誌,以及支援可撤銷的操作。

    將請求被封裝成一個對象,當向某對象提交請求時,使我們可以不用去知道被具體的請求的操作或者請求的接收者,

  實現了動作的要求者對象和動作的執行者對象之間的解耦合。

適用性:

  1. 使用Command模式代替callback形式的回調應用;
  2. 在不同的時刻指定、排列和執行請求,動態變更要求;
  3. 支援取消操作;
  4. 支援修改日誌,儲存請求執行過程以便恢複操作;
  5. Command模式支援一組事務的叫用作業。且易於增加擴充新事務; 

  (何為事務參考:http://book.51cto.com/art/201202/319377.htm)

結構:

      

    

說明:

  Command:命令的封裝者,聲明命令執行的操作介面;

  ConcreteCommand:使命令的具體接收者執行相應的動作;

  Invoke:發出執行該命令的請求,儲存具體命令執行者的抽象父類;

  Receiver:實施與執行具體相關請求的具體操作,由命令對象建立者指定;

 

  通過此圖可以到此模式的核心:實現操作對象的調用Invoke與具體實施該操作的對象Receiver之間解耦,

是通過增加Command,將動作執行委託給Command來執行調用真正的動作執行者。

 

二 Android中OnClickListener

在View類中:

  public interface OnClickListener {

    void onClick(View v);

  }

  作用:Interface definition for a callback to be invoked when a view is clicked.

    就是一個click事件的回調介面。

  在需要響應click事件的View中,都需要註冊一個相應的ClickListener來監聽click事件發生時被調用。

看一下面這段代碼:Button控制項

  

public class MyActivity extends Activity {  protected void onCreate(Bundle icicle) {         super.onCreate(icicle);         setContentView(R.layout.content_layout_id);         final Button button = (Button) findViewById(R.id.button_id);         //註冊click事件監聽器         button.setOnClickListener(new View.BtnOnClickListener());  }  private class BtnOnClickListener extends OnClickListener{    public void onClick(View v) {      // Perform action on click    }  }}

 

看一下相應的這個結構: 

   

    

  這裡面View就是Invoke,OnClickListener就是Command,MyActivity就是Receiver。

執行過程如下:

  

    

 

可以看到這種方式的應用屬於:

  Command模式替換Callback函數形式的回調模型,讓架構結構變得更清晰更靈活。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.