一.定义
模板方法模式定义了一个算法的步骤,并允许子类为一个或者多个步骤提供实践方法,让子类在不改变算法结构的情况下重新定义算法中的某些步骤。
二.使用场景
一系列方法中有通用的方法,又有个别使用的方法时。
三.优缺点:
优点:
1.提高代码的复用性
2.提高了扩展性
缺点:
每一个不同的实现都需要一个子类来实现,导致类的个数增加,增加了系统的复杂度。
四.角色
1.抽象类:定义了一整套算法框架
2.具体实现类:根据需要去实现抽象类中的方法
五.案例说明
举办某个比赛:
抽象方法:
/**
* 模版方法模式-比赛中的方法
*/
public abstract class Match {
protected void enroll(){
System.out.print("报名比赛");
}
protected void start(){
System.out.print("开始比赛");
}
protected void end(){
System.out.print("结束比赛比赛");
}
protected void award(){
System.out.print("领奖");
}
}
2.具体实现方法:
public class TakeOne extends Match{
@Override
protected void enroll() {
System.out.print("one 报名比赛");
}
@Override
protected void start() {
System.out.print("one 开始比赛");
}
@Override
protected void end() {
System.out.print("one 结束比赛");
}
}
public class TakeTwo extends Match{
@Override
protected void enroll() {
System.out.print("two 报名比赛");
}
@Override
protected void start() {
System.out.print("two 开始比赛");
}
@Override
protected void end() {
System.out.print("two 结束比赛");
}
@Override
protected void award() {//two获奖了所以有领取奖品的方法
System.out.print("two 领取奖品");
}
}
六.在Android中的应用:
模版方法模式在Android中很多地方都有用到,比如:
1.android View的绘制方法
2.activity的生命周期:
我们知道activity的生命周期有onCreate()-onStart()-onResume()-onParse()-onStope()-onDestroy,其中onCreate()是必须要实现的方法,
其他的方法根据需求来使用。