什麼是模闆模式?
模闆模式是抽象父類定義了子類需要重寫的相關方法。 而這些方法,仍然是通過父類方法調用的。 根據描述,“模闆”的思想展現在:父類定義的接口方法。 除此之外,子類方法的調用,也是被父類控制的。
應用場景
一些系統的架構或者算法骨架,由“BOSS”編寫抽象方法,具體的實作,交給“小弟們”實作。 而絕對是不是用“小弟們”的方法,還是看“BOSS”的心情。 不是很恰當的比喻哈~
ES6 實作
Animal是抽象類,Dog和Cat分别具體實作了eat()和sleep()方法。 Dog或Cat執行個體可以通過live()方法調用eat()和sleep()。
注意:Cat和Dog執行個體會被自動添加live()方法。不暴露live()是為了防止live()被子類重寫,保證父類的控制權。
class Animal {
constructor() {
// this 指向執行個體
this.live = () => {
this.eat();
this.sleep();
};
}
eat() {
throw new Error("模闆類方法必須被重寫");
sleep() {
throw new Error("模闆類方法必須被重寫");
class Dog extends Animal {
constructor(...args) {
super(...args);
eat() {
console.log("狗吃糧");
sleep() {
console.log("狗睡覺");
class Cat extends Animal {
super(...args);
console.log("貓吃糧");
console.log("貓睡覺");
/ 以下為測試代碼 */
// 此時, Animal中的this指向dog
let dog = new Dog();
dog.live();
// 此時, Animal中的this指向cat
let cat = new Cat();
cat.live();
好程式員web前端分享