Java设计模式 - 模板方法模式
在模板模式中,父抽象类公开几个抽象方法供子类实现。在父抽象类中有另一个方法或几个方法使用抽象方法来实现业务逻辑。
抽象方法通常用于父类所需的每个步骤。
例如,为了使用新的软件,我们需要下载,安装,配置和运行。如果我们要使用模板模式来编码逻辑,我们将创建一个父类如下。
abstract class UseSoftware{
abstract void download();
abstract void install();
abstract void configuration();
abstract void run();
public void useNewSoftware(){
download();
install();
configuration();
run();
}
}
对于使用不同的软件,我们只需要从上面的抽象类继承并提供详细的实现。
模板模式是一种行为模式。
例子
abstract class Software {
abstract void initialize();
abstract void start();
abstract void end();
//template method
public final void play(){
//initialize
initialize();
//start
start();
//end
end();
}
}
class Browser extends Software {
@Override
void end() {
System.out.println("Browser Finished!");
}
@Override
void initialize() {
System.out.println("Browser Initialized!.");
}
@Override
void start() {
System.out.println("Browser Started.");
}
}
class Editor extends Software {
@Override
void end() {
System.out.println("Editor Finished!");
}
@Override
void initialize() {
System.out.println("Editor Initialized!");
}
@Override
void start() {
System.out.println("Editor Started!");
}
}
public class Main {
public static void main(String[] args) {
Software s1 = new Browser();
s1.play();
s1 = new Editor();
s1.play();
}
}
上面的代码生成以下结果。
Browser Initialized!
Browser Started.
Browser Finished!
Editor Initialized!
Editor Started!
Editor Finished!