金麦建站官网,太仓做企业网站,衡水seo营销,滕州建设局网站java模板方法模式模板方法模式是一种行为模式#xff0c;建议在超类中更一般地定义算法。 该算法是在称为模板方法的方法中定义的。 子类仅定义更具体的算法步骤的实现。 使用这种设计模式的好处是#xff0c;算法后面的任何更改只会影响超类中的代码。 此外#xff0c;它还… 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.htmljava模板方法模式