模板模式
没有意志,理想便是幻想。
1. 模板模式
定义
通常又叫模板模式,是指定义一个算法的骨架,并允许子类为其中的一个或者多个步骤提供实现。
模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤
属于行为设计模式
适用场景
一次性实现一个算法不变的部分,并将可变的行为留给子类实现
各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复
优点
利用模板方法将相同处理逻辑的代码放到抽象父类中,可以提高代码的复用性。
将不同的代码不同的子类中,通过对子类的扩展增加新的行为,提高代码的扩展性。
把不变的行为卸载父类上,去除子类的重复代码,提高了一个很好的代码复用平台,符合开闭原则。
缺点
类的数目增加,每一个抽象类都需要一个子类来实现,这样导致类的个数增加
类数目的增加,间接地增加了系统实现的复杂度
继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。
2. 模板模式案例
public abstract class AbstractStep {
protected final void step() {
// 第一步:
step1();
// 第二步:
step2();
// 第三步:
step3();
// 第四步:
step4();
}
protected void step4(){
System.out.println("第四步");
}
protected void step3(){
System.out.println("第三步");
}
protected void step2(){
System.out.println("第二步");
}
protected void step1() {
System.out.println("第一步");
}
}
public class StepOne extends AbstractStep {
}
public class StepTwo extends AbstractStep {
}
public class Test {
public static void main(String[] args) {
StepOne one = new StepOne();
one.step();
StepTwo two = new StepTwo();
two.step();
}
}
第一步
第二步
第三步
第四步
第一步
第二步
第三步
第四步
在抽象类AbstractStep
中定义了不可重写的方法step()
,这个方法规定了要按顺序执行的方法,子类不可以修改。如果StepOne
类只能修改其余的方法。
public class StepOne extends AbstractStep {
@Override
protected void step1() {
System.out.println("子类执行");
}
}
子类执行
第二步
第三步
第四步
第一步
第二步
第三步
第四步
这就是模板方模式。
3. JDBC模板模式
现在开发中直接操作jdbc
的少了,以前灭有mybatis
等orm
框架的时候,数据库操作增删改查
都是被封装成模板方法的。这个是模板模式的典型案例。
感谢您阅读本文,如果您觉得文章写的对您有用的话,请您点击上面的“关注”,点个赞,这样您就可以持续收到《JAVA架构师之路》的最新文章了。文章内容属于自己的一点点心得,难免有不对的地方,欢迎在下方评论区探讨,你们的关注是我创作优质文章的动力。