说明:
模板设计模式就是,父类写好模板,具体算法实现部分交给子类来实现,根据不同的需求,采用不同的实现。
举例:
这里我们以榨水果汁为例,将它分为三部,打开榨汁机、榨汁、关闭榨汁机。其中榨汁这一部分对于不同的水果有所不同,所以我们可以采用模板设计模式将开关机器写成固定的模板。
父类:
package lqs;
abstract public class Squeeze {
public void squeeze() {
openMachine();
squeezeFruit();
closeMachine();
}
private void closeMachine() {
System.out.println("关闭榨汁机");
}
private void openMachine() {
System.out.println("打开榨汁机");
}
abstract public void squeezeFruit();
}
子类:
package lqs;
public class SqueezeApple extends Squeeze{
@Override
public void squeezeFruit() {
System.out.println("将苹果洗净,并榨汁");
}
}
package lqs;
public class SqueezeOrange extends Squeeze{
@Override
public void squeezeFruit() {
System.out.println("将橘子洗净,并榨汁");
}
}
运行:
package lqs;
public class Test {
public static void main(String[] args) {
SqueezeApple apple=new SqueezeApple();
apple.squeeze();
System.out.println("--------------------");
SqueezeOrange orange=new SqueezeOrange();
orange.squeeze();
}
}
这么做的好处,即子类代码量减少,且不会出现重复代码。不好之处在于若需求更改,父类模板也需要做改变。