行为型模式主要涉及算法和对象间的职责分配。通过使用对象组合,行为型模式可以描述一组对象应该如何协作来完成一个整体任务。
模板(Template)方法:定义一个算法的骨架,将一些操作步骤延迟到子类中实现,使得子类可以再不改变算法骨架的情况下,重定义某些特定的步骤。
优点:
- 封装了不变的部分,扩展子类的部分
- 便于代码复用,满足开闭原则
缺点:
- 每个实现都需要定义一个子类。容易使类数量变高
- 依赖抽象实现,子类执行结果影响父类结果,这是一种反向控制的结构,不利于理解
示例:
我们现在有个画板,需要绘制一些图形,而绘制的动作就可以交给子类来实现
public static void main(String[] args) {Artboard artboard = new Circle();artboard.draw();}// 画板abstract static class Artboard{// 绘画public void draw(){// 画一个圆形drawCircle();}// 绘制圆形abstract void drawCircle();}static class Circle extends Artboard{@Overridevoid drawCircle() {System.out.println("绘制一个圆形");}}
而如果我们需要扩展,则只需要新增一个子类即可
public static void main(String[] args) {Artboard artboard = new RedCircle();artboard.draw();}static class RedCircle extends Artboard{@Overridevoid drawCircle() {System.out.println("绘制一个红色圆形");}}
