1.
定义
定义了算法的基本骨架,把一些步骤的实现延迟到子类中进行,它可以让子类不改变基本算法的数据结构而优化或者精加工(
refine
)某个特定的算法步骤。
2.
优点
模板方法设计模式有如下优点:
1)
减少了冗余的代码,重用代码部分通过父类完成
2)
将某个特定的算法步骤延迟到子类实现,不会影响父类的功能
3)
易于扩展,子类通过实现某个特定的方法而形成自己特定的算法逻辑,易于扩展
4)
子类不能修改父类算法的执行顺序
3.
实例
以
JUnit
为例,
JUnit
的基础核心类
TestCase
使用到这种模式,
TestCase
要求先运行
SetUp
方法,再运行子类中的各个
Test
方法,最后进行资源的释放。下例中的
testBare
方法,包含了算法的基本骨架:
setUp,runTest
和
tearDown
,而
setUp
和
tearDown
没有实现任何逻辑,留给子类实现。因此再次总结,模板方法设计模式最大的好处是避免了代码的冗余,并且不会改变算法的基本步骤,只是对某个特定步骤的实现留给子类去完成。
/**
* Runs the bare test
sequence.
*
@exception
Throwable
if any exception is thrown
*/
public
void
runBare()
throws
Throwable {
Throwable exception=
null
;
setUp();
try
{
runTest();
}
catch
(Throwable running) {
exception= running;
}
finally
{
try
{
tearDown();
}
catch
(Throwable tearingDown) {
if
(exception ==
null
) exception= tearingDown;
}
}
if
(exception !=
null
)
throw
exception;
}
protected
void
runTest()
throws
Throwable {
assertNotNull
(
fName
);
// Some VMs crash
when calling getMethod(null,null);
Method runMethod=
null
;
try
{
// use getMethod
to get all public inherited
// methods.
getDeclaredMethods returns all
// methods of
this class but excludes the
// inherited
ones.
runMethod= getClass().getMethod(
fName
, (Class[])
null
);
}
catch
(NoSuchMethodException e) {
fail
(
"Method
\""
+
fName
+
"\" not
found"
);
}
if
(!Modifier.isPublic
(runMethod.getModifiers())) {
fail
(
"Method
\""
+
fName
+
"\"
should be public"
);
}
try
{
runMethod.invoke(
this
, (Object[])
new
Class[0]);
}
catch
(InvocationTargetException e) {
e.fillInStackTrace();
throw
e.getTargetException();
}
catch
(IllegalAccessException e) {
e.fillInStackTrace();
throw
e;
}
}
/**
* Sets up the fixture, for
example, open a network connection.
* This method is called
before a test is executed.
*/
protected
void
setUp
()
throws
Exception {
}
/**
* Tears down the fixture,
for example, close a network connection.
* This method is called
after a test is executed.
*/
protected
void
tearDown()
throws
Exception {
}
分享到:
相关推荐
模板方法模式是设计模式中行为型模式的一种,它在软件工程中扮演着非常重要的角色,尤其是在Java编程中。模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重...
3. **模板方法(Template Method)**:这是在抽象类中定义的方法,它调用了一个或多个钩子方法(即抽象方法或可选的具体方法)。模板方法执行整体算法的顺序,并且通常在最后调用钩子方法以完成算法的定制部分。 4....
代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template Method...
包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)...Strategy)、模板方法模式(Template Method)和访问者模式(Visitor)...
### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而某些步骤则可能因具体实现而异。为了解决这类问题,设计模式中引入了一种叫做“模板方法模式”的...
在"template-method-demo"这个示例中,我们可以预见到它将展示如何在Java中应用模板方法模式。这个压缩包可能包含以下内容: 1. 一个抽象类(例如:`AbstractClass`),它定义了模板方法。在这个类中,可能会有一个...
模板方法模式是一种行为设计模式,它允许在定义行为框架的同时,延迟部分具体步骤到子类中实现。这种模式主要用于在父类中定义算法的骨架,而将一些步骤的实现细节留给子类去完成,从而使得不同的子类可以重用相同的...
行为型模式则关注对象之间的通信和职责分配,如观察者(Observer)、模板方法(Template Method)和策略(Strategy)模式。 这篇文章可能涵盖了以上各种模式的详细解释,包括它们的目的、工作原理、优缺点以及如何...
10. 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 11. 访问者模式(Visitor):表示对一个对象结构进行操作的算法。 学习Java设计模式不仅能提升编程技能,还能帮助...
3. **模板方法模式(Template Method)**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。`Template`目录下的代码可能展示了如何定义基本...
行为型设计模式如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、状态(State)、职责链(Chain of Responsibility)、解释器...
- 模板方法模式(Template Method) - 策略模式(Strategy) - 责任链模式(Chain of Responsibility) - 中介者模式(Mediator) - 访问者模式(Visitor) - 命令模式(Command) - 解释器模式(Interpreter) - 迭代器...
Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的标准化方法。设计模式不是具体的代码或库,而是一种通用解决方案的描述,可以应用于各种编程语言,包括Java。在这个名为"JAVA ...
《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...
模板方法模式(Template Method)定义操作中的算法骨架,而将一些步骤延迟到子类中;还有职责链模式(Chain of Responsibility),使得多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。 4. ...
### Java设计模式26模板方法模式 #### 模式动机 模板方法模式是基于继承机制的一种代码复用技术,它允许子类通过扩展的方式重写父类中的抽象方法,以此来实现不同子类间的差异性行为。在软件工程中,我们经常遇到...
模板方法模式(Template Method)定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 在"设计模式-可复用面向对象软件的基础"这个主题中,...
3. **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...
16. **模板方法模式(Template Method Pattern)**:在抽象类中定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 17. **状态模式(State...
本资源“设计模式--java版.rar”提供了一种深入理解和应用Java设计模式的方式。 在Java开发中,设计模式主要分为三大类:创建型模式、结构型模式和行为型模式。创建型模式如单例(Singleton)、工厂方法(Factory ...