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.缺点:子类实现了抽象的方法也可能影响到了父类。