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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

設(shè)計(jì)模式:模版模式(TemplatePattern)-轉(zhuǎn)

2019-11-14 15:39:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

模版模式

又叫模板方法模式,在一個(gè)方法中定義一個(gè)算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結(jié)構(gòu)的情冴下,重新定義算法中的某些步驟。

 

我們使用沖泡咖啡和沖泡茶的例子

加工流程:

咖啡沖泡法:1.把水煮沸、2.用沸水沖泡咖啡、3.把咖啡倒進(jìn)杯子、4.加糖和牛奶

茶沖泡法:   1.把水煮沸、2.用沸水沖泡茶葉、3.把  茶 倒進(jìn)杯子、4.加蜂蜜

 

一、創(chuàng)建一個(gè)創(chuàng)模板(抽象)類

package com.kaishengit.beverage;public abstract class Beverage {    /**     * 沖泡咖啡或茶...流程     */    public final void create(){        boilWater();//把水煮沸        brew();//用沸水沖泡...        pourInCup();//把...倒進(jìn)杯子        addCoundiments();//加...    }    public abstract void addCoundiments();    public abstract void brew();        public void boilWater() {        System.out.);    }        public void pourInCup() {        System.out.println("倒進(jìn)杯子");    }}

2>創(chuàng)建一個(gè)咖啡類(Coffee)和茶(Tea)類,都繼承Beverage抽象類

1.咖啡(Coffee)

2.茶(Tea)

3.我們測(cè)試一下:

 運(yùn)行結(jié)果:

-----------------------------------

 

煮開水

用水沖咖啡

倒進(jìn)杯子

添加糖和牛奶

 

-----------------------------------

在模版模式中使用掛鉤(hook)

存在一個(gè)空實(shí)現(xiàn)的方法,我們稱這種方法為”hook”。子類可以視情況來(lái)決定是否要覆蓋它。

 

1>我們對(duì)模板類(Beverage)進(jìn)行修改

2>假如我們搞活動(dòng),喝一杯咖啡送一杯,修改咖啡(Coffee)類

3>使用上面的測(cè)試類

運(yùn)行結(jié)果:

--------------------------------

 

煮開水

用水沖咖啡

倒進(jìn)杯子

添加糖和牛奶

再來(lái)一杯

--------------------------------

結(jié)果中有“再來(lái)一杯”...

我們也可以這樣使用掛鉤,讓其決定里面的代碼是否執(zhí)行

1>我們對(duì)模板類(Beverage)進(jìn)行修改

2>我們對(duì)Coffee類進(jìn)行修改,讓其不添加配料

 3>還是使用上面的測(cè)試類

運(yùn)行結(jié)果:

------------------------------------------------------

 

煮開水

用水沖咖啡

倒進(jìn)杯子

------------------------------------------------------

運(yùn)行結(jié)果中沒(méi)有添加配料

 

 

 

關(guān)于模板模式

 

1>模板模式定義了算法的步驟,把這些步驟的實(shí)現(xiàn)延遲到子類

2>模板模式為我們提供了一個(gè)代碼復(fù)用的技巧

3>模板抽象類中可以定義具體方法、抽象方法和鉤子方法

4>為了防止子類改變模板中的算法,可以將模板方法聲明為final

5>鉤子是一種方法,它在抽象類中不做事,或只做默認(rèn)的事,子類可以選擇要不要實(shí)現(xiàn)它


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 杭州市| 镇宁| 清水河县| 抚顺市| 迁安市| 章丘市| 河间市| 嘉定区| 黑山县| 灌云县| 永春县| 淮南市| 平舆县| 名山县| 甘洛县| 马龙县| 和平县| 鄱阳县| 太保市| 东光县| 朝阳市| 福清市| 屯门区| 晋城| 太原市| 临夏县| 屯门区| 繁峙县| 贵港市| 黄陵县| 承德县| 革吉县| 英吉沙县| 固阳县| 通州区| 平塘县| 万安县| 津南区| 武城县| 息烽县| 平武县|