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

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

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

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

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

類圖: 這里寫圖片描述

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

類圖: 這里寫圖片描述

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青州市| 清镇市| 峨山| 山丹县| 广安市| 桂阳县| 郁南县| 巢湖市| 大余县| 广宁县| 澎湖县| 湟源县| 绥芬河市| 宣武区| 汤原县| 余干县| 潜江市| 瑞金市| 康定县| 科技| 山西省| 琼海市| 奇台县| 静乐县| 温宿县| 叶城县| 天祝| 铜山县| 公主岭市| 鄱阳县| 清苑县| 贺州市| 九寨沟县| 台江县| 晴隆县| 平陆县| 五大连池市| 永春县| 昭觉县| 陕西省| 阳泉市|