亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java設計模式之模版方法模式簡介

2019-11-26 15:28:04
字體:
來源:轉載
供稿:網友

Java設計模式的模板方法模式定義一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變算法的結構即可重定義該算法中的某些特定步驟。屬于行為類模式

如下圖所示:

事實上,模版方法是編程中一個經常用到的模式。先來看一個例子,某日,程序員A拿到一個任務:給定一個整數數組,把數組中的數由小到大排序,然后把排序之后的結果打印出來。經過分析之后,這個任務大體上可分為兩部分,排序和打印,打印功能好實現,排序就有點麻煩了。但是A有辦法,先把打印功能完成,排序功能另找人做。

abstract class AbstractSort { /** * 將數組array由小到大排序 * @param array */ protected abstract void sort(int[] array); public void showSortResult(int[] array){ this.sort(array); System.out.print("排序結果:"); for (int i = 0; i < array.length; i++){  System.out.printf("%3s", array[i]); } }}

寫完后,A找到剛畢業入職不久的同事B說:有個任務,主要邏輯我已經寫好了,你把剩下的邏輯實現一下吧。于是把AbstractSort類給B,讓B寫實現。B拿過來一看,太簡單了,10分鐘搞定,代碼如下:

class ConcreteSort extends AbstractSort { @Override protected void sort(int[] array){ for(int i=0; i<array.length-1; i++){  selectSort(array, i); } }  private void selectSort(int[] array, int index) { int MinValue = 32767; // 最小值變量 int indexMin = 0; // 最小值索引變量 int Temp; // 暫存變量 for (int i = index; i < array.length; i++) {  if (array[i] < MinValue){ // 找到最小值  MinValue = array[i]; // 儲存最小值  indexMin = i;   } } Temp = array[index]; // 交換兩數值 array[index] = array[indexMin]; array[indexMin] = Temp; }}

寫好后交給A,A拿來一運行:

public class Client { public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // 預設數據數組 public static void main(String[] args){ AbstractSort s = new ConcreteSort(); s.showSortResult(a); }}

運行結果:
排序結果:  0  1  3  4  5  7  9 10 12 32

運行正常。行了,任務完成。沒錯,這就是模版方法模式。大部分剛步入職場的畢業生應該都有類似B的經歷。一個復雜的任務,由公司中的牛人們將主要的邏輯寫好,然后把那些看上去比較簡單的方法寫成抽象的,交給其他的同事去開發。這種分工方式在編程人員水平層次比較明顯的公司中經常用到。比如一個項目組,有架構師,高級工程師,初級工程師,則一般由架構師使用大量的接口、抽象類將整個系統的邏輯串起來,實現的編碼則根據難度的不同分別交給高級工程師和初級工程師來完成。怎么樣,是不是用到過模版方法模式?
 
模版方法模式的結構:

模版方法模式由一個抽象類和一個(或一組)實現類通過繼承結構組成,抽象類中的方法分為三種:

1.抽象方法:父類中只聲明但不加以實現,而是定義好規范,然后由它的子類去實現。

2.模版方法:由抽象類聲明并加以實現。一般來說,模版方法調用抽象方法來完成主要的邏輯功能,并且,模版方法大多會定義為final類型,指明主要的邏輯功能在子類中不能被重寫。

3.鉤子方法:由抽象類聲明并加以實現。但是子類可以去擴展,子類可以通過擴展鉤子方法來影響模版方法的邏輯。

抽象類的任務是搭建邏輯的框架,通常由經驗豐富的人員編寫,因為抽象類的好壞直接決定了程序是否穩定性。

實現類用來實現細節。抽象類中的模版方法正是通過實現類擴展的方法來完成業務邏輯。只要實現類中的擴展方法通過了單元測試,在模版方法正確的前提下,整體功能一般不會出現大的錯誤。
 
模版方法的優點及適用場景:

容易擴展。一般來說,抽象類中的模版方法是不易反生改變的部分,而抽象方法是容易反生變化的部分,因此通過增加實現類一般可以很容易實現功能的擴展,符合開閉原則。

便于維護。對于模版方法模式來說,正是由于他們的主要邏輯相同,才使用了模版方法,假如不使用模版方法,任由這些相同的代碼散亂的分布在不同的類中,維護起來是非常不方便的。

比較靈活。因為有鉤子方法,因此,子類的實現也可以影響父類中主邏輯的運行。但是,在靈活的同時,由于子類影響到了父類,違反了里氏替換原則,也會給程序帶來風險。這就對抽象類的設計有了更高的要求。

在多個子類擁有相同的方法,并且這些方法邏輯相同時,可以考慮使用模版方法模式。在程序的主框架相同,細節不同的場合下,也比較適合使用這種模式。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品尤物福利片在线观看| 一区二区三区视频观看| 欧美亚洲成人免费| 欧美激情三级免费| 亚洲自拍偷拍色图| 久久久国产一区| 在线观看成人黄色| 色偷偷888欧美精品久久久| 91香蕉嫩草影院入口| 亚洲第一天堂无码专区| 欧美床上激情在线观看| 国产精品色视频| 欧美性极品少妇精品网站| 日韩视频欧美视频| 亚洲aaa激情| 国产精品va在线播放我和闺蜜| 国产成人综合一区二区三区| 久久天堂av综合合色| 亚洲国产精品va在线看黑人| 91久久中文字幕| 91日本在线观看| 精品无人区太爽高潮在线播放| 国产激情999| 日本人成精品视频在线| 欧美中文字幕在线播放| 午夜精品蜜臀一区二区三区免费| 亚洲性视频网站| 亚洲色图35p| 亚洲精品国产拍免费91在线| www.欧美精品一二三区| 亚洲视频免费一区| 国产日韩精品视频| 亚洲国产中文字幕在线观看| 亚洲天堂久久av| 欧美日韩国产麻豆| 韩国v欧美v日本v亚洲| 这里只有精品视频在线| 国产成人精品av在线| 在线观看精品自拍私拍| 欧美有码在线视频| 精品欧美aⅴ在线网站| 亚洲电影免费观看高清完整版| 亚洲国产精久久久久久| 97碰碰碰免费色视频| 最近2019中文免费高清视频观看www99| 欧美性xxxx18| 精品中文字幕在线2019| 九九热精品视频| 色综合色综合网色综合| 久久久久久久久综合| 伊人一区二区三区久久精品| 日本三级久久久| 国产成人高清激情视频在线观看| 国产成人综合亚洲| 亚洲性生活视频| 欧美区二区三区| 色播久久人人爽人人爽人人片视av| 操人视频在线观看欧美| 国内精品久久久久久久久| 欧美在线一级va免费观看| 日本最新高清不卡中文字幕| 欧美中文在线免费| 粗暴蹂躏中文一区二区三区| 欧美放荡办公室videos4k| 亚洲一区二区福利| 国产精品爽爽爽爽爽爽在线观看| 亚洲第一区在线| 成人免费大片黄在线播放| 欧美亚洲国产视频小说| 亚洲精品电影网在线观看| 欧美日韩另类字幕中文| 日韩电影免费观看在线| 欧美激情在线狂野欧美精品| 亚洲国产精品专区久久| 亚洲精品福利在线| 色噜噜狠狠色综合网图区| 亚洲精品一区二区三区不| 国产小视频国产精品| 中文字幕v亚洲ⅴv天堂| 国产做受高潮69| 国产精品一区二区三区毛片淫片| 国精产品一区一区三区有限在线| 亚洲第一级黄色片| 中文字幕在线观看亚洲| 9.1国产丝袜在线观看| 亚洲理论电影网| 精品久久久久久久久久久久| 97香蕉超级碰碰久久免费软件| 日韩极品精品视频免费观看| 欧美中文字幕第一页| 搡老女人一区二区三区视频tv| 欧美三级欧美成人高清www| 国产亚洲aⅴaaaaaa毛片| 一区二区欧美在线| 国产精品在线看| 亚洲男人天堂网站| 日韩精品久久久久久福利| 精品国偷自产在线| 欧美日韩美女在线| 97香蕉超级碰碰久久免费的优势| 亚洲影院色在线观看免费| 国产aaa精品| 性欧美视频videos6一9| 欧美国产日韩一区二区在线观看| 色香阁99久久精品久久久| 久99九色视频在线观看| 国产精国产精品| 亚洲欧美激情视频| 日本久久久久亚洲中字幕| 日韩有码片在线观看| 亚洲精品免费一区二区三区| 97在线视频精品| 日韩欧美高清在线视频| 97国产成人精品视频| 亚洲女人被黑人巨大进入| 色偷偷偷综合中文字幕;dd| 国产91av在线| 欧美视频国产精品| 国产亚洲精品久久久久久777| 日本高清视频一区| 欧美日韩国产中文精品字幕自在自线| 亚洲精品国产综合区久久久久久久| www国产亚洲精品久久网站| 日本午夜精品理论片a级appf发布| 国产人妖伪娘一区91| 精品国产自在精品国产浪潮| 亚洲跨种族黑人xxx| 日韩电视剧在线观看免费网站| 国产精品久久久久久久久影视| 中文字幕亚洲欧美在线| **欧美日韩vr在线| 中文字幕亚洲无线码在线一区| 欧美精品videos另类日本| 欧美成人午夜影院| 久久91超碰青草是什么| 日韩成人在线网站| 亚洲国产欧美一区二区三区同亚洲| 久久免费成人精品视频| 高潮白浆女日韩av免费看| 亚洲国产成人精品久久| 亚洲影院色无极综合| 日韩成人在线视频| 亚洲欧美精品suv| 日韩视频中文字幕| 97人人爽人人喊人人模波多| 亚洲天堂免费在线| 日韩成人激情影院| 亚洲色图在线观看| 2019亚洲日韩新视频| 国产精品综合不卡av| 亚洲成人网av| 欧美贵妇videos办公室| 国产精品久久一| 另类专区欧美制服同性| 欧美一区二区.| 久久99热精品这里久久精品| 欧美黄色片免费观看| 久久这里只有精品99| 亚洲电影av在线| 久久九九国产精品怡红院| 成人女保姆的销魂服务| 国产精品视频精品视频| 久久久久久这里只有精品| 全色精品综合影院|