1.用意
准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法的用意。
2.类图

3.代码
/*
* 抽象模板纇
*/
public abstract class AbstractClass {
public void templateMethod() {
//调用基本方法(由子类实现)
doOperation1();
//调用基本方法(由子类实现)
doOperation2();
//调用基本方法(已经实现)
doOperation3();
}
/**
* 基本方法的声明(由子类实现)
*/
protected abstract void doOperation1();
/**
* 基本方法的声明(由子类实现)
*/
protected abstract void doOperation2();
/**
* 基本方法(已经实现)
*/
private final void doOperation3() {
S.s("doOperation3();");
}
}
/*
* 具體模板纇
*/
public class ConcreteClass extends AbstractClass{
@Override
protected void doOperation1() {
S.s("doOperation1();");
}
@Override
protected void doOperation2() {
//像下麵這樣的調用不應當發生
//doOperation3();
S.s("doOperation2();");
}
}
/*
* 測試類
*/
public class Test {
public static void main(String[] args) {
AbstractClass ac = new ConcreteClass();
ac.templateMethod();
}
}
z
本文深入探讨了模板方法模式的应用,通过一个具体的类图和代码实例,展示了如何使用抽象类和具体类来实现具有不同实现逻辑的方法集合。重点介绍了如何在子类中覆盖和实现抽象类提供的模板方法,以及这种设计模式在软件工程中的灵活性和复用性。
1819

被折叠的 条评论
为什么被折叠?



