设计模式之模板方法模式

模板方法模式(Template Method Pattern):定义一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构而重新定义某些特定步骤,属于行为型模式。

组成

模板方法模式由抽象类 AbstractClass 和实现类 ConcreteClass 组成。

其中 AbstractClass 给出一个顶级逻辑的骨架,逻辑的组成步骤在相应的抽象操作中,推迟到子类实现;ConcreteClass 实现父类定义的一个或多个抽象方法,从而使得顶级逻辑的实现各不相同。

优点

将不变的行为放在父类,去除了子类中的重复代码。

缺点

算法骨架改变时需要修改抽象类。

使用场景

当系统中算法的骨架固定,而实现可能有很多种时,可以使用模板方法模式。

设计原则

遵循复用原则,违反里氏替换原则(子类影响到了父类)。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public abstract class AbstractTestPaper {

public void questionA() {
System.out.println("1 + 1 = ?");
System.out.println(answerA());
}

public void questionB() {
System.out.println("1 - 1 = ?");
System.out.println(answerB());
}

public abstract int answerA();

public abstract int answerB();
}

public class ConcreteTestPater extends AbstractTestPaper {

@Override
public int answerA() {
return 2;
}

@Override
public int answerB() {
return 0;
}
}

public class Test {
public static void main(String[] args) {
AbstractTestPaper testPaper = new ConcreteTestPater();
testPaper.questionA();
testPaper.questionB();
}
}
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • © 2016-2020 姜越

谢谢老板

支付宝
微信