java中的模板設計模式
阿新 • • 發佈:2021-03-10
設計模式概述
- 設計模式就是解決一些問題時的固定思路,也就是程式碼設計思路經驗的總結。
模板設計模式概述
- 針對某些情況,在父類中指定一個模板,然後根據具體情況,在子類中靈活的具體實現該模板
public abstract class Person{
// 有方法體的方法
// 通用模板
public void sleep(){
System.out.println("兩眼一閉,然後就開始進入夢鄉...");
}
// 沒有方法體的方法
// 填充模板
public abstract void eat();
}
抽象類體現的就是模板設計思想
模板模式的實現步驟
- 定義抽象父類作為模板
- 在父類中定義"模板方法"— 實現方法(通用模板)+抽象方法(填充模板)
- 子類繼承父類,重寫抽象方法(填充父類的模板)
- 測試類:
- 建立子類物件,通過子類呼叫父類的“實現的方法”+ “子類重寫後的方法” e
案例演示
假如我現在需要定義新司機和老司機類,新司機和老司機都有開車功能,開車的步驟都一樣,只是駕駛時的姿勢有點不同,新司機:開門,點火,雙手緊握方向盤,剎車,熄火
,老司機:開門,點火,右手握方向盤左手抽菸,剎車,熄火
分析:
- 定義一個司機抽象類作為父類
- 通用模板: 開車步驟新司機和老司機都是一樣的
- 有方體的方法
- 開門
- 點火
- 姿勢(不能確定的)
- 剎車
- 熄火
- 有方體的方法
- 填充模板: 開車的姿勢不一樣
- 抽象方法
- 通用模板: 開車步驟新司機和老司機都是一樣的
- 定義新司機類,繼承司機類,重寫開車姿勢的抽象方法
- 定義老司機類,繼承司機類,重寫開車姿勢的抽象方法
程式碼如下:
// 司機開車的模板類
public abstract class Driver {
public void go() {
System.out.println("開門");
System. out.println("點火");
// 開車姿勢不確定?定義為抽象方法
ziShi();
System.out.println("剎車");
System.out.println("熄火");
}
public abstract void ziShi();
}
現在定義兩個使用模板的司機:
public class NewDriver extends Driver {
@Override
public void ziShi() {
System.out.println("新司機雙手緊握方向盤");
}
}
public class OldDriver extends Driver {
@Override
public void ziShi() {
System.out.println("老司機右手握方向盤左手抽菸...");
}
}
編寫測試類
public class Demo02 {
public static void main(String[] args) {
NewDriver nd = new NewDriver();
nd.go();
OldDriver od = new OldDriver();
od.go();
}
}
執行效果
可以看出,模板模式的優勢是,模板已經定義了通用架構,使用者只需要關心自己需要實現的功能即可!非常的強大!
小結
- 定義一個抽象類作為父類
- 在抽象類中,該模板可以確定的功能,就定義成一個有方法體的方法,作為通用模板
- 在抽象類中,該模板不可以確定的功能,就定義成一個抽象方法,作為填充模板
- 讓需要使用該模板的類,去繼承該抽象類,填充模板\使用模板