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

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

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

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

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

類圖: 這里寫圖片描述

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

類圖: 這里寫圖片描述

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁布县| 杂多县| 会东县| 新巴尔虎左旗| 南康市| 望城县| 开鲁县| 马鞍山市| 文化| 上虞市| 城口县| 嘉义县| 平南县| 桃江县| 龙门县| 济阳县| 襄垣县| 车致| SHOW| 隆德县| 汕头市| 桐乡市| 酒泉市| 确山县| 加查县| 屏边| 邯郸市| 隆回县| 兰州市| 阿克| 柏乡县| 准格尔旗| 凭祥市| 灌阳县| 临澧县| 日喀则市| 谷城县| 海安县| 郯城县| 太保市| 抚顺市|