国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java設計模式之模板方法模式

2019-11-14 10:03:56
字體:
來源:轉載
供稿:網友

模板方法模式:在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。

類圖: 這里寫圖片描述

我們把做菜分為洗菜,切菜,做菜,上菜四個步驟,我們用模板方法模式來實現做紅燒魚和做辣子雞丁。

類圖: 這里寫圖片描述

模板類Cook代碼實現:

public abstract class Cook { public void Cook(){ Wash(); Cut(); Cooking(); Dish(); } public void Wash(){ System.out.CookFish類代碼實現:

public class CookFish extends Cook{ @Override public void Cut() { // TODO Auto-generated method stub System.out.println("在魚背上劃幾刀,方便入味"); } @Override public void Cooking() { // TODO Auto-generated method stub System.out.println("先煎至兩面金黃出鍋,后做湯汁,最后收汁出鍋"); } public void Wash(){ System.out.println("洗魚,去鱗"); }}

CookChicken類代碼實現:

public class CookChicken extends Cook{ @Override public void Cut() { // TODO Auto-generated method stub System.out.println("用刀切成雞丁"); } @Override public void Cooking() { // TODO Auto-generated method stub System.out.println("加入蔥姜蒜辣子爆炒"); } public void Wash(){ System.out.println("洗雞"); }}

Client類代碼實現:

public class Client { public static void main(String[] args){ CookFish cookFish = new CookFish(); CookChicken cookChicken = new CookChicken(); System.out.println("/n做一條紅燒魚..."); cookFish.Cook(); System.out.println("/n做一個辣子雞丁..."); cookChicken.Cook(); }}

運行結果:

做一條紅燒魚...洗魚,去鱗在魚背上劃幾刀,方便入味先煎至兩面金黃出鍋,后做湯汁,最后收汁出鍋上菜做一個辣子雞丁...洗雞用刀切成雞丁加入蔥姜蒜辣子爆炒上菜

總結: 模板方法定義了算法的步驟,把這些步驟的實現延遲到子類。 模板方法模式為我們提供了一種代碼復用的重要技巧。 模板方法的抽象類可以定義具體方法、抽象方法和鉤子。 抽象方法由子類實現。 鉤子是一種方法,它在抽象類中不做事,或者只做默認的事,子類可以選擇要不要去覆蓋它。 為了防止子類改變模板方法中的算法,可以將模板方法聲明為final。 策略模式和模板方法模式都封裝算法,一個用組合,一個用繼承。 工廠方法是模板方法的一種特殊版本。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奉节县| 临安市| 澄迈县| 武邑县| 正蓝旗| 洛宁县| 邮箱| 连山| 宁化县| 大洼县| 枣庄市| 文昌市| 临湘市| 岳西县| 丁青县| 建水县| 加查县| 绥中县| 连平县| 休宁县| 镇雄县| 灵丘县| 义乌市| 曲松县| 桐乡市| 博白县| 晋中市| 新野县| 德阳市| 岐山县| 松潘县| 榕江县| 大姚县| 百色市| 河曲县| 八宿县| 翼城县| 英德市| 深圳市| 若羌县| 湘西|