模板模式
# 模板模式
有些方法,所有的子类实现的流程完全一致,只是流程中的某个步骤的具体实现不一致,可以将该方法提取到父类,在父类中完成整个流程的实现,遇到实现不一致的方法时,将该方法做成抽象方法。
abstract class Human {
name: string = "";
age: number = 0;
move(x: number, y: number) {
console.log("判断边界值是否出界"); // 1
console.log("判断是否存在障碍物无法跨越"); // 2
if (this.rule(x, y)) {
console.log("移动成功");
}
}
protected abstract rule(x: number, y: number): boolean;
}
class Man extends Human {
name: string = "Tom";
age: number = 1;
protected rule(x: number, y: number): boolean {
return true;
}
}
class Woman extends Human {
name: string = "Alisa";
age: number = 1;
protected rule(x: number, y: number): boolean {
return false
}
}
let m: Human = new Man()
m.move(1,1)
如上述代码中 move 方法。前两个判断是相同的,只需要判断移动是否合规即可。