`

设计模式回顾之三:模板方法模式(TemplateMethod)

 
阅读更多

设计模式回顾系列文章: 主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。

------------------------------------------------

模板方法模式(TemplateMethod)

定义一个操作中算法的骨架,而将一些步骤延迟到子类中,不改变算法的结构而重定义它的步骤。

允许定义可变的子步骤,同时保持基本过程一致。

TemplateMethod模式由一个抽象类组成,这个抽象类定义了需要覆盖的基本TemplateMethod方法。每个从这个抽象类派生的具体类将为此抽象类实现新方法。

 

程序实现:

抽象类Algorithm.java:定义算法执行步骤(templateMethod方法),以及部分步骤的实现(doStep2)。

public abstract class Algorithm{
	public void templateMethod(){
		doStep1();
		doStep2();
		doStep3();
		doStep4();
		doStep5();
	}
	
	public abstract void doStep1();
	public abstract void doStep4();
	public abstract void doStep5();
	
    public void doStep2(){
		System.out.println("Default Step 2!");
	}
    
    public void doStep3(){
		System.out.println("Default Step 3!");
	}
    
}

实体算法类1:继承模板类Algorithm,同时实现模板中未实现的步骤,可以覆写已定义的步骤。

public class CustomAlgorithm1 extends Algorithm{

	public void doStep1(){
		System.out.println("CustomAlgorithm1 Step1");
	}

	public void doStep4(){
		System.out.println("CustomAlgorithm1 Step4");
	}

	public void doStep5(){
		System.out.println("CustomAlgorithm1 Step5");
	}

}

实体算法类2:同实体算法类1。

public class CustomAlgorithm2 extends Algorithm{

	public void doStep1() {
		System.out.println("CustomAlgorithm2 Step1");
	}

	public void doStep4() {
		System.out.println("CustomAlgorithm2 Step4");
	}

	public void doStep5() {
		System.out.println("CustomAlgorithm2 Step5");
	}

}

入口main方法:

public static void main(String[] args){
		Algorithm algorithm=new CustomAlgorithm1();
		algorithm.templateMethod();
		
		algorithm=new CustomAlgorithm2();
		algorithm.templateMethod();
	}

此时因多态机制,会分别执行不同的算法步骤。

 

举例:JdbcTemplate、HibernateTemplate、SocketTemplate等可以使用模板的场景。

 

分享到:
评论

相关推荐

    《设计模式:可复用面向对象软件的基础》英文版

    例如责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator...Strategy)、模板方法模式(Template Method)和访问者模式(Visitor)等...

    李建忠 C#面向对象设计模式纵横谈(25):设计模式总结

    3. 行为型模式:这类模式关注对象间的交互和职责分配,包括策略(Strategy)、模板方法(Template Method)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录...

    C#设计模式.PDF

    在本章节中,作者可能会回顾面向对象编程的基本概念,如封装、继承、多态等,并为后面介绍的设计模式奠定理论基础。 ### 2. 设计模式举例 这部分内容将通过具体的例子来介绍设计模式的应用场景,帮助读者理解不同...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    设计模式是面向对象编程中用于解决常见问题的一系列模板。它们为软件设计提供了标准化的解决方案,帮助开发者更好地组织代码,提高软件的可维护性和可扩展性。本文档旨在深入探讨由Erich Gamma、Richard Helm、Ralph...

    11-回顾和总结(1).html

    模板方法模式( Template Method ) 观察者模式( Observer ) 迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式...

    侯捷2015设计模式课件-同济

    设计模式是软件工程中一种被广泛认可的、用来解决软件设计问题的通用方法模板。它最早由四人组(Gang of Four,简称GoF)的三位作者在1994年出版的《Design Patterns: Elements of Reusable Object-Oriented ...

    设计模式解析习题解答,已经做好目录标签

    - 第19章的模板方法模式(Template Method Pattern)定义了操作的框架,允许子类决定执行哪些步骤。 - 第21章涵盖了单例模式(Singleton Pattern)和双重检查锁定模式,保证类只有一个实例,并提供全局访问点。 - 第...

    C#设计模式大全

    模板方法模式是一个行为型设计模式,它定义了一个算法的骨架,并允许子类为某些步骤提供具体的实现。 - **结构**:包含抽象类、具体类。 - **示例性代码**:例如,定义一个游戏的基本流程。 - **实际应用**:例如,...

    算法导论 DesignPatterns Gof

    如责任链(Chain of Responsibility)、命令(Command)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、观察者(Observer)、状态(State)、策略(Strategy)、模板方法(Template Method)和...

    DesignPatterns:回顾在软件体系结构和设计课程中看到的设计模式

    15. 模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 以上这些设计模式都是软件开发中常用的...

    DesignPattern.rar

    行为型模式则着重于对象之间的交互和职责分配,如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、责任链(Chain of Responsibility)、命令(Command)、迭代器(Iterator)、访问者(Visitor...

    designPattern

    3. **行为型模式**:这类模式主要关注对象间的交互和责任分配,包括策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、访问者模式(Visitor)、责任链模式...

    vjezbaUzorciDizajna:Izrada kratkih programa sa jednim ilivišeuzoraka dizajna

    在Java中,有三种主要类型的设计模式:创建型、结构型和行为型。创建型模式如单例(Singleton)、工厂方法(Factory Method)和建造者(Builder)关注对象的创建;结构型模式如适配器(Adapter)、装饰器(Decorator...

Global site tag (gtag.js) - Google Analytics