核心思想
定义一个父类的算法框架,将其部分实现步骤延迟到子类中,子类在实现时不用改变相关结构即可实现相关的算法步骤。嗯,说白了就是继承的一种使用。。。。
简单实现
抽象父类
一般要注意那些方法是可以暴露给子类调用的,不需要给子类使用的用protected关键词就好。1
2
3
4
5
6
7
8
9
10public abstract class AbsA {
protected abstract void deal1();
protected abstract void deal2();
public void deal(){
deal1();
deal2();
}
}
具体子类
子类只要实现父类中的相关方法就可以了。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class A extends AbsA {
protected void deal1() {
System.out.println("逻辑处理1");
}
protected void deal2() {
System.out.println("逻辑处理2");
}
}
public class B extends AbsA {
protected void deal1() {
System.out.println("逻辑处理3");
}
protected void deal2() {
System.out.println("逻辑处理4");
}
}
简单调用
1 | public static void main(String[] args) { |
在抽象的父类中设定了暴露的方法,只需要对其调用就好,不需要关心其内部实现。
小结
模板方法应该算是设计模式中最为简单的一种了,但是其使用是极为广泛的,要注意在抽象类中,并没有抽象到绝对的一般化,而是设置了相关步骤给子类去实现,而子类实现的结果往往影响了父类中相关函数,所以它与一般的对抽象类的使用有很大不同。