定义:定义一个操作中的算法的框架,而将一些步骤延伸到子类中,使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。
UML图:
简单示例:
public abstract class TemplateMethod{
//登录验证
//先验证用户名
//后验证密码
public void loginCheck(String username, String password){
checkUsername(username);
checkPassword(username, password);
}
//验证账号
protected abstract void checkUsername(String username);
//验证密码
protected abstract void checkPassword(String username, String password);
}
//通过数据库数据验证
public class CheckByLib extends TemplateMethod{
protected void checkUsername(String username){
System.out.println("通过数据库数据验证账号");
}
protected void checkPassword(String username, String password){
System.out.println("通过数据库数据验证密码");
}
}
//通过文件数据验证
public class CheckByFile extends TemplateMethod{
protected void checkUsername(String username){
System.out.println("通过文件数据验证账号");
}
protected void checkPassword(String username, String password){
System.out.println("通过文件数据验证密码");
}
}
public class Text{
public static void main(String[] args){
TemplateMethod checkByLib = new CheckByLib();
checkByLib.loginCheck("123","123");
TemplateMethod checkByFile = new CheckByFile();
checkByFile.loginCheck("123","123");
}
}
优点:① 问题整体的解决思路清晰明了,同时提高了算法的扩展性。
②提炼代码(代码的复用)。