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

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

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

2019-11-14 09:58:20
字體:
來源:轉載
供稿:網友

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

類圖: 這里寫圖片描述

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

類圖: 這里寫圖片描述

模板類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。 策略模式和模板方法模式都封裝算法,一個用組合,一個用繼承。 工廠方法是模板方法的一種特殊版本。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柯坪县| 嵊泗县| 汕头市| 团风县| 安西县| 仁寿县| 孝义市| 德保县| 佛学| 鸡东县| 宁河县| 江城| 广水市| 连江县| 金寨县| 怀仁县| 靖宇县| 太保市| 南漳县| 肃南| 夏邑县| 兰坪| 高碑店市| 甘泉县| 城市| 余姚市| 镇巴县| 读书| 三原县| 玛曲县| 吉隆县| 绥阳县| 于都县| 金堂县| 宝坻区| 宜都市| 肃南| 武乡县| 东城区| 靖宇县| 黑河市|