模板模式
what(是什么)
模板方法模式在方法中定义方法的骨架,将某些步骤推迟到子类中实现,模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。
why(使用场景)
- 复用和扩展
- 具有相同的业务流程,具体的步骤实现不同时,可以将流程放到模板方法中,具体步骤推迟到不同的子类中实现
- 回调
how(代码举例)
public abstract class AbstractBizHandler {
public final void handle(Map<String, Object> params) {
//
check(params);
//
doHandle(params);
}
protected abstract void check(Map<String, Object> params);
protected abstract void doHandle(Map<String, Object> params);
}
public class BizHandler1 extends AbstractBizHandler{
@Override
protected void check(Map<String, Object> params) {
}
@Override
protected void doHandle(Map<String, Object> params) {
}
}
public class TemplateDemo {
public static void main(String[] args) {
AbstractBizHandler bizHandler = new BizHandler1();
Map<String, Object> params = new HashMap<>();
bizHandler.handle(params);
}
}
// 回调的方式
public interface CallBack {
void call();
}
public class TemplateClass {
void handle(CallBack callBack) {
// 其他处理
callBack.call();
// 其他处理
}
}
public class TemplateCallbackDemo {
public static void main(String[] args) {
TemplateClass templateClass = new TemplateClass();
templateClass.handle(() -> {
System.out.println("Callback!!");
});
}
}
where(用在哪)
- java InputStream
- java ArrayList
- java Servlet
- JUnit TestCase