**
设计模式之模版方法模式
**
模版方法模式(Template Method Pattern)定义
Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.
(定义一个操作中的算法等框架,而将一些步骤延迟到之类中。使得之类可以不改变一个算法的结构即可重定向该算法的某些特定步骤。)
图解
模块方法模式的优点
- 封装不变部分,扩展可变部分
- 提取公共部分代码,便于维护
行为由父类控制,之类实现
代码实现
1创建一个父类,把所有公共抽象方法写在里面
public abstract class AbstractClass {
protected abstract void doSomething();
protected abstract void doAnything();
public void templateMethod(){
/**
* 调用基本方法,完成相关的逻辑
* */
this.doAnything();
this.doSomething();
}
}
2子类继承父类,完成方法复写
public class ConcreteClass1 extends AbstractClass{
@Override
protected void doSomething() {
//业务逻辑处理
}
@Override
protected void doAnything() {
//业务逻辑处理
}
}
public class ConcreteClass2 extends AbstractClass{
@Override
protected void doSomething() {
//业务逻辑处理
}
@Override
protected void doAnything() {
//业务逻辑处理
}
}
3代码调用
public class Client {
@Test
public void test(){
AbstractClass class1 = new ConcreteClass1();
AbstractClass class2 = new ConcreteClass2();
//调用模版方法
class1.templateMethod();
class2.templateMethod();
}
}