目录
模版模式
描述:通过模板方法按照规定好的流程执行。
- 固定流程控制:抽象类中的模版方法定义了不可变的算法骨架,使用final修饰防止子类修改流程。
- 可变部分抽象化:将可能变化的部分声明为抽象方法,由子类实现具体行为。
- 代码复用:公共行为在抽象类中实现,避免子类重复代码。
下面通过代码体现模版模式的结构和特点:
1.抽象类定义算法骨架
在抽象类中定义一个模板方法(执行流程不希望被改变,用final关键字修饰,该方法不被子类继承)。
public abstract class AbstractHome {
//定义一个模板方法,用final关键字修饰,该方法不被子类继承
public final void homeFrameWork()
{
this.work();
this.goHomeType();
this.goHome();
}
public void work()
{
System.out.println("工作到点下班");
}
//回家的交通工具不一样,抽象方法,由子类实现
public abstract void goHomeType();
public void goHome()
{
System.out.println("到家了");
}
}
2.具体子类实现可变部分
public class HuaweiCar extends AbstractHome {
@Override
public void goHomeType() {
System.out.println("乘坐华为汽车回家");
}
}
public class XiaomiCar extends AbstractHome {
@Override
public void goHomeType() {
System.out.println("乘坐小米汽车回家");
}
}
3.客户端使用方式
public class Test {
public static void main(String[] args) {
AbstractHome ah = new HuaweiCar();
// AbstractHome ah = new XiaomiCar();
ah.homeFrameWork();
}
}
运行效果如下: