範本方法模式 Template Method Pattern
1.為什麼要使用範本方法模式
減少重複的程式碼
2.如何使用
將重複的程式碼拉到抽象父類別中,並將需要做出不同結果的部分寫成抽象方法,透過多型讓子類別實現該抽象方法時,做出我們需要區別的不同行為
範例
//抽象的父類別
public abstract class NBAPlayer {
String name;
//在方法中呼叫抽象方法來讓結果不同
public void score(){
System.out.println(this.name+"用"+this.skill()+"得分");
}
//抽象方法讓子類別實現時決定該做什麼
abstract String skill();
public static class Lillard extends NBAPlayer{
public Lillard(){
this.name = "Lillard";
}
@Override
String skill() {
return "LOGOSHOT";
}
}
public static class Curry extends NBAPlayer{
public Curry(){
this.name = "Curry";
}
@Override
String skill() {
return "大號三分球";
}
}
public static class KD extends NBAPlayer{
public KD(){
this.name = "KD";
}
@Override
String skill() {
return "中距離急停跳投";
}
}
public static class LBJ extends NBAPlayer{
public LBJ(){
this.name = "LBJ";
}
@Override
String skill() {
return "坦克切入";
}
}
}
實際結果
public class Main {
public static void main(String[] args) {
// write your code here
NBAPlayer kd = new NBAPlayer.KD();
NBAPlayer curry = new NBAPlayer.Curry();
NBAPlayer lbj = new NBAPlayer.LBJ();
NBAPlayer lillard = new NBAPlayer.Lillard();
kd.score();
curry.score();
lbj.score();
lillard.score();
}
}