看了這兩個(gè)設(shè)計(jì)模式之后, 對(duì)于簡(jiǎn)單直接的例子可以判斷, 策略模式就是定義算法族, 然后通過組合算法族和委托的辦法來實(shí)現(xiàn)類, 模板方法則是父類定義算法的骨架,子類再來實(shí)現(xiàn)骨架中的部分步驟;但是有兩個(gè)例子我很不理解:1. thingking in java里面有講到File.list(FilenameFilter filter)和FilenameFilter就是策略設(shè)計(jì)模式. 這是書中的原文:因?yàn)閘ist()實(shí)現(xiàn)了基本的功能, 而且按照FilenameFilter的形式提供了這個(gè)策略, 以便完善list()在提供服務(wù)時(shí)所需的算法我覺著 list()在內(nèi)部使用FilenameFilter, 也可以理解為File定義好了算法骨架, 由FilenameFilter補(bǔ)齊部分步驟, 這么想 這就是 模板方法; Arras.sort()head first設(shè)計(jì)模式 里面講到Arrays.sort(Object[] objects)和``Comparable```是模板方法設(shè)計(jì)模式. 這是head first的原文:因?yàn)檫@個(gè)模式的重點(diǎn)在于提供一個(gè)算法, 并讓子類實(shí)現(xiàn)某些步驟而數(shù)組的排序做法明顯也是如此.我是這么想的: sort()函數(shù)提供了基本的功能, 元素的比較由comparable算法族來實(shí)現(xiàn); 我這樣想, sort()函數(shù)就是策略模式;到底這兩者該怎么區(qū)分呢? 還是我的理解哪里有問題?
策略模式和模板模式該怎么區(qū)分?
慕仙森
2018-08-03 21:27:32