说明:模板提供整体的框架,把抽象的实现留到子类中。
1、类图
2、实现:
public abstract class AbstractExport implements Cloneable {
protected String exportType;
protected abstract void exportPrivate();
public void export() {
System.out.println("export type:" + this.exportType);
this.exportPrivate();
System.out.println("end export private");
}
}
public class AsyncExport extends AbstractExport {
public AsyncExport() {
super.exportType = "ASYNC";
}
@Override
protected void exportPrivate() {
System.out.println("export async private");
}
}
public class SyncExport extends AbstractExport {
public SyncExport() {
super.exportType = "SYNC";
}
@Override
protected void exportPrivate() {
System.out.println("export async private");
}
}
public class ExportTest {
public static void main(String[] args) throws CloneNotSupportedException {
AbstractExport asyncExport = new AsyncExport();
asyncExport.export();
System.out.println("======");
AbstractExport syncExport = new SyncExport();
syncExport.export();
}
}
3、实际项目应用:
模板方法在实际项目中的应用算是比较多的。比如用户不同密码校验方式。不同拦截器的实现等,一般都会使用到模板方法模式。抽象类中提供解决方法的思路框架,具体的实现在实现类中,也有助于理清开发思路。