TypeScript模板设计模式

abstract class Template {

    abstract excute1(): void; // 必须在派生类中实现   

    abstract excute2(): void; // 必须在派生类中实现   

    abstract excute3(): void; // 必须在派生类中实现   

    excute() { //这就是模板方法  定义了执行的顺序 所有子都是这个顺序。

        this.excute1();

        this.excute2();

        this.excute3();

    }

}

class aaa extends Template {

    excute1() {

        YBLog.log("aaa", " 做了 1  ");

    };

    excute2() {

        YBLog.log("aaa", " 做了 2  ");

    };

    excute3() {

        YBLog.log("aaa", " 做了 3  ");

    };

}

class bbb extends Template {

    excute1() {

        YBLog.log("bbb", " 做了 1  ");

    };

    excute2() {

        YBLog.log("bbb", " 做了 2  ");

    };

    excute3() {

        YBLog.log("bbb", " 做了 3  ");

    };

}

new aaa().excute();

new bbb().excute();

1. 优点:不变的部分放到父类。 可变的部分放到子类。 提取公共的代码,便于维护。 具体的功能逻辑放到了子类,好扩展

2.缺点:子类实现了抽象的方法也可能影响到了父类。

猜你喜欢

转载自blog.csdn.net/ting100/article/details/108686202