java设计模式行为篇------模板方法

核心思想

定义一个父类的算法框架,将其部分实现步骤延迟到子类中,子类在实现时不用改变相关结构即可实现相关的算法步骤。嗯,说白了就是继承的一种使用。。。。

简单实现

抽象父类

一般要注意那些方法是可以暴露给子类调用的,不需要给子类使用的用protected关键词就好。

1
2
3
4
5
6
7
8
9
10
public 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
19
public 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
2
3
4
5
6
public static void main(String[] args) {
AbsA a= new A();
AbsA b= new B();
a.deal();
b.deal();
}

在抽象的父类中设定了暴露的方法,只需要对其调用就好,不需要关心其内部实现。

小结

模板方法应该算是设计模式中最为简单的一种了,但是其使用是极为广泛的,要注意在抽象类中,并没有抽象到绝对的一般化,而是设置了相关步骤给子类去实现,而子类实现的结果往往影响了父类中相关函数,所以它与一般的对抽象类的使用有很大不同。