模版設計模式的概念或者定義:
定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該演算法中的某些特定步驟。
以前雖然經常在專案中使用模版設計模式,特別在baseactivity,basefragement,basefragementactivity,baseadapter這種基類定義一些延伸到子類中實現的方法,但是不知道這個就是模版設計模式,我就斃了狗了。
比如在base類裡面為了規範**的風格,在oncreate()裡面呼叫空的函式,比如initview(),比如onclicklistener(),比如,初始化title的inittitlebar(),然後通過抽象方法供子類去實現這些模組,這樣在專案編碼過程中能夠將每個人的**規範到指定的位置,方便檢視和除錯**。還有就是對於一些顯示和判斷的邏輯封裝,以及都自定義的toast,對話方塊的統一,都可以通過在base類中通過模版設計模式來實現,在子類中只是改變顯示的內容,和邏輯以及業務的調整。
模版設計模式對編碼的好處:
規範**的流程,統一**風格。
可擴充套件。
將子類的公共業務進行提取,減少冗餘**的編寫,實現**的復用。
以baseactivity舉例子來說:
getview(intid)
isnull(stringstr)
isstr(stringstr)
gotoactivity(class<?>cls)
toast(stringmessage)
都是將本來在子類中冗餘的**統一封裝到base類進行呼叫,簡化**編寫,減少冗餘。
2import
3import
android.content.intent;
4import
android.content.res.resources;
5import
android.os.bundle;
6import
android.text.textutils;
7import
android.view.keyevent;
8import
android.view.view;
9import
android.view.window;
10import
android.view.windowmanager;
11import
android.widget.edittext;
12import
android.widget.toast;
13import
com.yougou.android.util.logger;
14/**
15* @類名: baseactivity
16* @描述: todo(activity基類,所有的activity都要繼承自該activity)
17*/
18public
class baseactivity extends
activity
32/**
33* 通過泛型來簡化findviewbyid
34*
35*
@param
id36
* @param
37*
@return
38*/
39 @suppresswarnings("unchecked")
40protected
final
extends view> e getview(int
id) catch
(classcastexception ex) 47}
48/**
49* 檢查字串是否是空物件或空字串
50*
51*
@param
str52
* @return
為空返回true,不為空返回false
53*/
54public
boolean
isnull(string str) else60}
61/**
62* 檢查字串是否是字串
63*
64*
@param
str65
* @return
為空返回true,不為空返回false
66*/
67public
boolean
isstr(string str)
70/**
71* 從當前activity跳轉到目標activity,
72* 如果目標activity曾經開啟過,就重新展現,
73* 如果從來沒開啟過,就新建乙個開啟
74*
75*
@param
cls76
*/77
public
void gotoexistactivity(class<?>cls)
83/**
84* 新建乙個activity開啟
85*
86*
@param
cls87
*/88
public
void gotoactivity(class<?>cls)
93/**
94* @title: toast
95* @description: todo(土司操作)
96*
@param
@param
context
97*
@param
@param
message 要顯示的內容
98*
@return
void 返回型別
99*
@throws
100*/
101public
void
toast(string message)
105/**
106* @title: toast
107* @description: todo(土司操作)
108*
@param
@param
context
109*
@param
@param
message 設定檔案
110*
@return
void 返回型別
111*
@throws
112*/
113public
void toast(int
message)
117/**
118* 從資源獲取字串
119*
120*
@param
resid
121*
@return
122*/
123public string getstr(int
resid)
126/**
127* @方法名: getdemon
128* @描述: todo(獲取資源檔案中的尺寸內容)
129* @設定:
@param
mrid
130* @設定:
@return
設定檔案
131* @返回: int 返回型別
132* @日期: 2014-6-30 下午2:14:11
133*
@throws
134*/
135protected
int getdemon(int
mrid)
138/**
139* 從edittext 獲取字串
140*
141*
@param
edittext
142*
@return
143*/
144public
string getstr(edittext edittext)
147@override
148public
boolean onkeydown(int
keycode, keyevent event)
153return
super
.onkeydown(keycode, event);
154}
155 }
模版設計模式
b 定義 b 在乙個方法中定義乙個演算法骨架,而將一些步驟延伸到子類中。其本質 把可變和不可變進行分類。可變部分延伸到子類來完成,不變部分交給父類定義成骨架 b 優點 b 1 可以使的子類可以在不改變演算法骨架的情況下,重新定義演算法中的某些步驟。2 模版方法通過把不變的部分搬移到超類,去除了子類中...
js設計模式 模版設計模式
設計模式處處透漏者前輩們的指揮,在眾多設計模式中模版設計模式是軟體設計中最常用,最正統的模式,也是本人最喜歡的模式,其就像一顆顆螺絲釘處處體現在軟體設計和其他模式中 父類定義乙個模板結構,將部分具體內容延遲到子類去實現 在軟體系統設計中最常用的就是介面 抽象類 類 設計模式,如下圖 再此模式中介面定...
抽象類應用 模版設計模式
機械人 robot 具備充電 工作兩個基本操作 人類 human 具備吃飯 工作 睡覺三個基本操作 豬 pig 具備吃飯 睡覺兩個基本操作。定義的乙個行為類 abstract class action public abstract void eat 定義子類的操作標準 public abstrac...