模板方法模式

109 阅读1分钟

定义

父类中定义处理流程的框架,在子类中实现具体处理的模式,就称为模板方法模式

  • 父类定义模板方法
  • 子类中实现了父类中的抽象模板方法
  • 不论子类中的具体实现如何,处理流程应该按照父类中所定义的那样执行

代码实现

父类

public abstract class AbstractDisplay {
    // 开始
    public abstract void open();

    // 打印
    public abstract void print();

    // 结束
    public abstract void close();

    public final void display() {
        open();

        for (int i = 0; i < 5; i++) {
            print();
        }

        close();
    }
}

子类

public class StringDisplay extends AbstractDisplay{

    @Override
    public void open() {
        System.out.println("+------------------+");
    }

    @Override
    public void print() {
        System.out.println("|-- hello, world --|");
    }

    @Override
    public void close() {
        System.out.println("+------------------+");
    }
}
public class CharDisplay extends AbstractDisplay {
    char aChar = 'a';

    @Override
    public void open() {
        System.out.println(">>>>");
    }

    @Override
    public void print() {
        System.out.println("--------" + aChar + "--------");
    }

    @Override
    public void close() {
        System.out.println("<<<<");
    }
}

\

注意问题:

  1. 父类中的抽象方法要子类去自己实现,但是这些方法的实现逻辑要依靠父类
  2. 实现逻辑的方法要声明为final,保证不会被子类重写

特点

父类与子类的相互协作支撑起了整个程序,虽然将更多方法的实现放在父类中会让子类变得更轻松,但是同时也降低了子类的灵活性