JavaScript es6设计模式 – Template Method(模板方法模式)

106次阅读
没有评论

Template Method(模板方法模式)

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

'use strict';

class AbstractClass {
    constructor() {
        console.log('AbstractClass Class created!');
    }

    templateMethod() {
        console.log('AbstractClass.templateMethod invoked');
        this.primitiveOperation1();
        this.primitiveOperation2();
    }

    primitiveOperation1() {
        console.log('AbstractClass.primitiveOperation1 invoked');
    }

    primitiveOperation2() {
        console.log('AbstractClass.primitiveOperation2 invoked');
    }
}

class ConcreteClass extends AbstractClass {
    constructor() {
        super();
        console.log('ConcreteClass Class created!');
    }

    primitiveOperation1() {
        console.log('ConcreteClass.primitiveOperation1 invoked');
    }

    primitiveOperation2() {
        console.log('ConcreteClass.primitiveOperation2 invoked');
    }
}

let obj = new ConcreteClass();
obj.templateMethod();