java模板方法模式_Java中的模板方法模式
java模板方法模式
模板方法模式是一種行為模式,建議在超類中更一般地定義算法。 該算法是在稱為模板方法的方法中定義的。 子類僅定義更具體的算法步驟的實現。
使用這種設計模式的好處是,算法后面的任何更改只會影響超類中的代碼。 此外,它還可以提高代碼的可重用性。
在本快速教程中,我們將學習在Java中實現模板方法模式。
模板方法模式:
假設我們必須寫一篇文章。 通常涉及幾個步驟:
- 主題研究
- 勾勒輪廓
- 寫介紹
- 然后,準備論文的正文
- 最后,總結一下
因此,讓我們繼續創建EssayTemplate類:
public abstract class EssayTemplate {private String topic;public EssayTemplate(String topic) {this.topic = topic;}public final void writeEssay() {doResearch();makeOutline();writeIntro();writeBody();writeConclusion(); } void doResearch() { System.out.println("Researching"); }void makeOutline() { System.out.println("Making an outline"); }void writeIntro() { System.out.println("Introducing topic"); }void writeConclusion() { System.out.println("Concluding topic");}abstract writeBody(); }無論論文的類型是短還是長,大多數的常規步驟,包括研究,創建大綱,撰寫引言和結論,都將保持不變。 因此,這些方法定義存在于超類本身中。
另外,請注意, 我們已將模板方法標記為最終方法,以避免被任何子類覆蓋。
使用模板類:
論文的主要內容或正文取決于論文的性質。 因此,我們已經為子類提供了writeBody()方法定義。
現在讓我們創建EssayTemplate的兩個子類-ShortEssay和LongEssay :
public class ShortEssay extends EssayTemplate {public ShortEssay(String topic) {super(topic);}@Overridepublic void writeBody() {System.out.println("Adding 2 paras");} }public class LongEssay extends EssayTemplate {public LongEssay(String topic) {super(topic);}@Overridepublic void writeBody() {System.out.println("Adding 6 paras");} }UML圖:
我們可以通過UML圖將模板模式的上述示例實現表示為:
ShortEssay和LongEssay定義了writeBody()方法的實現。 但是,定義該算法的方法以及其他常見方法的實現位于超類中。
使用模板模式的客戶端代碼:
讓我們編寫一些客戶端代碼來測試我們的實現:
//code in main method EssayTemplate shortEssay = new ShortEssay("Programming - An Art"); shortEssay.writeEssay();這樣,我們將在控制臺上獲得以下輸出:
Researching Making an outline Introducing topic Adding 2 paras Concluding topic結論:
在本教程中,我們研究了模板方法模式。
java.io.InputStream和java.io.OutputStream的所有非抽象方法都使用模板模式 。
翻譯自: https://www.javacodegeeks.com/2019/09/template-method-pattern-java.html
java模板方法模式
總結
以上是生活随笔為你收集整理的java模板方法模式_Java中的模板方法模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么重新启动iis(怎么重新启动路由器)
- 下一篇: java美元兑换,(Java实现) 美元