模板方法模式 定义一个操作中的算法骨架,而将一些步骤延迟到子类中国,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤
模板方法模式UML图
1.创建汽车模型抽象类CarModel
/**
* 汽车模型
* @author Administrator
*
*/
public abstract class CarModel {
/**
* 启动
*/
public abstract void start();
/**
* 停止
*/
public abstract void stop();
/**
* 用户不关心怎么启动和停止,只需知道可以开和停就可以
*/
public void excet(){
this.start();
this.stop();
}
}
2.创建汽车子类
public class BwmCar extends CarModel {
@Override
public void start() {
System.out.println("宝马一键启动。。。突突突");
}
@Override
public void stop() {
System.out.println("宝马停止");
}
}
public class OCar extends CarModel {
@Override
public void start() {
System.out.println("奥迪钥匙启动 。。。。突突突");
}
@Override
public void stop() {
System.out.println("奥迪拔钥匙停车");
}
}
3.Client测试
/**
* 客户端
* @author Administrator
*
*/
public class Client {
public static void main(String[] args) {
//用户不需要知道怎么开和停,只需要知道能启动和停止
CarModel cm = new BwmCar();
cm.excet();
CarModel oooo = new OCar();
oooo.excet();
}
}
模板方法模式的特点
通过把不变的行为搬到超类,去除子类中的重复代码来体现它的优势,提供了一个很好的代码复用平台
应用场景
当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现,我们可以通过模板方法模式把这些行为搬移到单一的地方,这样就能帮助子类摆脱重复的不变行为的纠缠