模板方法模式
About 1 min
模板方法模式,提供了在不重写方法的前提下允许子类重载部分方法的方法。在操作中定义算法的框架,将一些步骤由子类实现。该模式可以在不修改算法结构的情况下,让子类重新定义算法的特定步骤。
代码实现
抽象类
抽象类定义了算法的骨架,它由一个或多个基本方法和一个模板方法组成。
- 模板方法是一个具体方法,它实现了算法的框架,并在合适的地方调用基本方法。这个方法通常被声明为
final
,以防止子类重写整个算法流程。 - 基本方法可以是抽象方法,由子类实现;也可以是具体方法,提供默认实现但允许子类覆盖。
public abstract class AbstractTemplate {
public final void doAction() {
clickPowerButton();
System.out.println("账号:");
inputUsername();
System.out.println("密码:");
inputPassword();
clickEnterButton();
}
public abstract void inputUsername();
public abstract void inputPassword();
private void clickPowerButton() {
System.out.println("按下电源按钮,启动");
}
private void clickEnterButton() {
System.out.println("点击Enter按钮,进入系统");
}
}
具体类
public class GuestLogin extends AbstractTemplate {
@Override
public void inputUsername() {
System.out.println("xiaozhang");
}
@Override
public void inputPassword() {
System.out.println("1234");
}
}
使用
public class Client {
public static void main(String[] args) {
AbstractTemplate template = new GuestLogin();
template.doAction();
}
}
结果: