Java 设计模式之模板方法模式
本文为笔者学习《Head First设计模式》的笔记,并加入笔者自己的理解和归纳总结
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
结构图
图形(Shape
)里的draw
方法,分别调用drawBackground
、drawBound
和drawShape
方法。drawShape
方法由子类自己完成。
public abstract class Shape {
public void draw() {
drawBackground();
drawBound();
drawShape();
}
public void drawBackground() {
System.out.println("drawBackground");
}
public void drawBound() {
System.out.println("drawBound");
}
public abstract void drawShape();
}
圆形(Circle
)、椭圆(Oval
)和长方形(Rectangle
)分别实现了自己的drawShape
方法。
public class Circle extends Shape {
@Override
public void drawShape() {
System.out.println("draw Circle");
}
}
public class Oval extends Shape {
@Override
public void drawShape() {
System.out.println("draw Oval");
}
}
public class Rectangle extends Shape {
@Override
public void drawShape() {
System.out.println("draw Rectangle");
}
}
运行
public static void main(String[] args) {
Shape circle = new Circle();
circle.draw();
Shape oval = new Oval();
oval.draw();
Shape rectangle = new Rectangle();
rectangle.draw();
}
输出
drawBackground
drawBound
draw Circle
drawBackground
drawBound
draw Oval
drawBackground
drawBound
draw Rectangle
相关文章
Java 设计模式