天天看點

好程式員web前端教程分享js模闆模式

什麼是模闆模式?

模闆模式是抽象父類定義了子類需要重寫的相關方法。 而這些方法,仍然是通過父類方法調用的。 根據描述,“模闆”的思想展現在:父類定義的接口方法。 除此之外,子類方法的調用,也是被父類控制的。

應用場景

一些系統的架構或者算法骨架,由“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前端分享

繼續閱讀