行为型模式-模板模式详解
模板模式
- 是基于继承的代码复用的基本技术
- 在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中
- 在模板方法模式中,我们需要准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来让子类实现剩余的逻辑。
- 不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模板方法模式的用意。
- 模板方法模式体现了面向对象的诸多重要思想,是一种使用频率较高的模式。
代码实现:
/**
* 模板模式
*
* @author wanglizhi
* @date 2022-12-29
*/
public abstract class TemplatePattern {
/**
* 抽象方法
*/
public abstract void abstractMethod();
/**
* 具体方法1
*/
public void definiteMethod1() {
this.definiteMethod2();
this.hookMethod1();
System.out.println("执行完毕");
}
/**
* 具体方法2
*/
final public void definiteMethod2() {
System.out.println("具体方法2");
}
/**
* @return
*/
Boolean hookMethod1() {
System.out.println("钩子方法");
return true;
}
}
/**
* 实现
*
* @author wanglizhi
*/
public class TemplateRealization extends TemplatePattern {
@Override
public void abstractMethod() {
this.definiteMethod1();
System.out.println("具体实现1");
}
}
/**
* 实现2
*
* @author wanglizhi
*/
public class TemplateRealization1 extends TemplatePattern {
@Override
public void abstractMethod() {
this.definiteMethod1();
System.out.println("具体实现2");
}
}
/**
* 测试
*
* @author wanglizhi
*/
public class TemplateText {
public static void main(String[] args) {
TemplatePattern templatePattern = new TemplateRealization();
TemplatePattern templatePattern1 = new TemplateRealization1();
templatePattern.abstractMethod();
System.out.println("-----------------");
templatePattern1.abstractMethod();
}
}