在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。
缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
首先创建一个具有相同工序的抽象类
/**
* 画画工序抽象类
* @author XXJ
*
* 2019年3月1日 下午2:33:28
*/
public abstract class AbstractDraw {
public void prepare(){
System.out.println("准备画布颜料");
}
//选择画笔
public abstract void brushType();
public void end(){
System.out.println("画完盖章");
}
//画画工序
public void work(){
prepare();
brushType();
end();
}
}
继承这个模板抽象类,创建具有不同实现过程的子类
/**
* 选择铅笔
* @author XXJ
*
* 2019年3月1日 下午2:39:06
*/
public class PencilBrush extends AbstractDraw {
@Override
public void brushType() {
System.out.println("使用铅笔画画");
}
}
/**
* 选择毛笔
* @author XXJ
*
* 2019年3月1日 下午2:39:37
*/
public class WritingBrush extends AbstractDraw {
@Override
public void brushType() {
System.out.println("使用毛笔画画");
}
}
编写测试类Test
public class Test {
public static void main(String[] args) {
//画素描
AbstractDraw drawP = new PencilBrush();
drawP.work();
System.out.println("===============");
//画毛笔画
AbstractDraw drawW = new WritingBrush();
drawW.work();
}
}
运行结果显示