大話設計模式學習筆記(10) 模板方法模式

2021-08-17 09:55:38 字數 1415 閱讀 6604

原始碼git位址

老師在黑板上寫了一套試卷,需要小明和小剛兩個人做試卷。請用盡可能簡潔的**模擬出這個場景。

最簡單無腦的做法

public

class templatemode

}class ming

void answerquestion2()

}class gang

void answerquestion2()

}

大家一看應該就能看出來,這**絲毫沒有結構,重複率高。那麼我們改怎麼修改這個**呢?我們先分析一下這個問題就可以發現 問題的特點是問題都是一樣的,不同的只是每個同學的回答。所以我們可以把題目抽象成父類,然後因為每個同學都要回答。把回答這個動作也抽象到父類中。

package templatemode;

public

class

templatemode

}abstract

class

exam

abstract

void answerquestion1();

void question2()

abstract

void answerquestion2();

}class

ming

extends

exam

@override

void answerquestion2()

}class

gang

extends

exam

@override

void answerquestion2()

}

這個模式比較特別一點的是抽象類和抽象方法的使用。因為對於每個學生來說都是看到題目,回答問題兩個步驟。而且每個學生不一樣的只有各自的回答,所以我們不光把試卷內容抽象出來,還把回答的流程也抽象出來。由於 回答 是交給學生做的,所以在父類中可以使用抽象方法來表明 回答 這乙個動作。

模板方法模式所做的事情就是:把不變的事情移到父類,去除子類中的重複**

對了下面照例再貼一張plantuml

《大話設計模式》學習筆記

當我們學習了物件導向分析設計程式設計思想,我們要考慮通過封裝 繼承 多型把程式的耦合度降低。使得程式具備五個特點 可維護 可復用 可擴充套件 靈活性好。寫出來的程式 要規範,變數的命名等都要有意義,最後都用英文代替,要有異常判斷和錯誤處理。有人說初級程式設計師的工作就是複製和貼上,這其實是非常不好的...

《大話設計模式》 模板模式

題目 相同的兩份試卷,甲乙兩個人做,答案不同 public class testpager protected string answer public class testpagera extends testpager public class testpagerb extends testpa...

大話設計模式 第10章 模板方法模式

重複 易錯 難改 既然用了繼承,並且肯定這個繼承有意義,就應該要成為子類的模板,所有重複的 都應該要上公升到父類去,而不是讓每個子類都去重複。當要完成在某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,通常考慮用模板方法模式來處理。模板 template 方法模式...