編輯:關於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);
}
}
下面為模版方法模式實例運行的結果:
我們先來看看優酷的控件是怎麼回事? 只響應最後也就是最頂部的卡片的點擊事件,如果點擊的不是最頂部的卡片那麼就先把它放到最頂部,然後在移動到最前面來,反復如次。 知道了這
本周的主要內容介紹Gradle,NDK,管理依賴和Git等一、GradleGradle是一個基於Apache Ant和Apache Maven概念的項目自動化建構工具。它
一. Application 分析1. Application 簡介(1) Application 概念Application 概念: Application 屬於組件范
Android Studio安裝後發現所有的中文,不管是界面上的還是輸出的log中的中文都變成小框框 可以肯定是字體的問題 解決:菜單File->set