亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中怎么實現模板方法模式

發布時間:2021-06-26 15:56:10 來源:億速云 閱讀:122 作者:Leah 欄目:移動開發

本篇文章為大家展示了Android中怎么實現模板方法模式,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1.意圖
定義一個操作中的算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 
熱門詞匯:骨架  步驟 結構 延遲到子類

2.結構 

Android中怎么實現模板方法模式

定義了幾個步驟1,2,3等,在模板方法中按照一定的結構順序執行這些步驟。父類的方法可以有缺省實現,也可以是一個空實現,即所謂的鉤子操作。
結合實際情況,我們畫出View中draw方法涉及到的幾個步驟方法如下:

Android中怎么實現模板方法模式
學習模板方法對于我們了解框架的基類實現,生命周期和流程控制非常有幫助,我覺得是務必要掌握的一個模式。

3.代碼

public class View{      /**       * 鉤子操作,空實現       */     protected void onDraw(Canvas canvas) {      }         /**       *鉤子操作,空實現       */     protected void dispatchDraw(Canvas canvas) {      }         //算法骨架      public void draw(Canvas canvas) {         if (!verticalEdges && !horizontalEdges) {              // 步驟1              if (!dirtyOpaque) onDraw(canvas);                 // 步驟2              dispatchDraw(canvas);                 // 步驟3              onDrawScrollBars(canvas);                 return;          }      }      //... ...  }

我們看看系統組件TextView的實現:

public class TextView{      @Override     protected void onDraw(Canvas canvas) {          //大量自定義實現代碼      }  }

如果我們自定義View的話,我們一般也是重寫onDraw方法即可:

public class MyView extends View {         public MyView(Context context) {          super(context);      }         @Override     protected void onDraw(Canvas canvas) {          super.onDraw(canvas);      }         @Override     protected void dispatchDraw(Canvas canvas) {          super.dispatchDraw(canvas);      }         }

4.效果
(1).模板方法是一種代碼復用的基本技術。它們在類庫中尤為重要,它們提取了類庫中的公共行為。
(2).模板方法導致一種方向控制結構,"好萊塢法則":"Don't  call me,i will call  you.",即一個父類調用子類的操作,而不是相反。
(3).模板調用操作的類型有具體的操作,具體的AbstracClass操作,原語操作,工廠方法,鉤子操作。少定義原語操作。
(4).android中對這些重定義操作的命名喜歡在方法前加一個前綴on。
(5).模板方法使用繼承來改變算法的一部分。策略模式使用委托來改變整個算法。

上述內容就是Android中怎么實現模板方法模式,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和静县| 依安县| 阜康市| 湾仔区| 甘德县| 子洲县| 宝丰县| 介休市| 开江县| 牡丹江市| 仁怀市| 明溪县| 泾阳县| 东台市| 广宗县| 芦溪县| 清远市| 仁布县| 吐鲁番市| 馆陶县| 东台市| 库尔勒市| 东乡族自治县| 襄垣县| 庆阳市| 昌江| 梨树县| 且末县| 茶陵县| 静安区| 武威市| 平乐县| 天长市| 休宁县| 宁夏| 太湖县| 翁牛特旗| 怀来县| 灵川县| 铅山县| 腾冲县|