Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 模版方法模式在 android中使用

模版方法模式在 android中使用

編輯:關於Android編程

模版方法模式(Template Method):

模版方法模式是類的行為模式。提供一個抽象類,把一部分的邏輯以具體方法或構造子形式實現,然後聲明一些抽象方法,迫使子類實現剩余的邏輯代碼。不同的子類可以以不同的方式實現這些抽象方法,所以子類實現的剩余邏輯是不同的。另外,模版方法模式是基於繼承機制代碼復用的技術,它的結構和用法也是面向對象設計的核心。

模版方法模式的簡略類圖結構如下:

\

模版方法模式涉及到的幾個角色:

1、抽象模版角色

a、聲明一個或多個抽象方法,供子類來具體實現,這些方法為“基本方法”,他們是一個頂級邏輯的組成步驟。

b、聲明並實現一個模版方法,該方法一般是具體方法,給出了頂級邏輯的框架,具體的邏輯組成步驟推遲到子類實現。

2、具體模版角色

a、實現父類提供的一個或多個抽象方法。

b、每個抽象模版角色都有個具體模版角色對應,而每個具體模版角色都可給出這些對應抽象方法的不同實現。

 

好了,下面同樣以一個實例進行說明模版方法模式的使用。例子是這樣的:在android當中,我們經常使用繼承機制來為所有的Activity類定義一個基類BaseActivity,這樣可以把activity通用的邏輯封裝在基類中,實現代碼復用的能力,所以我們可以采用模版方法模式來實現,具體的結構類圖如下所示。

\

 

下面為模版方法模式的核心代碼部分:

抽象模版角色:

/**

* @description :

* 抽象模版角色-所有子類的父類

*/

public abstract class BaseActivity extends Activity {

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 基本配置

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

// ...

setContentView(R.layout.activity_base);

 

// 初始化頁面執行

initView();

}

 

/**

* @description :

* 生命周期方法-初始化頁面執行

*/

protected abstract void initView();

 

/**

* @description :

* 生命周期方法-重新進入頁面執行

*/

protected abstract void resume();

 

/**

* @description :

* 生命周期方法-隱藏到桌面或被掛起執行

*/

protected abstract void pause();

 

/**

* @description :

* 生命周期方法-離開當前頁面執行

*/

protected abstract void destroy();

 

@Override

protected void onDestroy() {

super.onDestroy();

destroy();

}

 

@Override

protected void onPause() {

super.onPause();

pause();

}

 

@Override

protected void onResume() {

super.onResume();

resume();

}

 

}

 

具體模版方法角色:

/**

* @description :

* 具體模版角色-具體實現抽象方法

*/

public class LoadingActivity extends BaseActivity {

 

@Override

protected void initView() {

setContentView(R.layout.activity_loading);

// TODO

log(初始化頁面執行);

}

 

@Override

protected void resume() {

log(恢復頁面執行);

}

 

@Override

protected void pause() {

log(暫停頁面執行);

}

 

@Override

protected void destroy() {

log(頁面銷毀執行);

}

 

private void log(String msg) {

Log.d(Patterns, msg);

}

}

 

下面為模版方法模式實例運行的結果:

 

\

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved