模板方法模式

本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-12-15

模板方法模式(Template Method):父类中定义一组操作算法骨架,而将一些实现步骤延迟到子类中,使得子类可以不改变父类的算法结构的同时可重新定义算法中的某些实现步骤。

主要解决:一些方法通用,却在每一个子类都重新写了这一方法。

何时使用:有一些通用的方法。

如何解决:将这些通用算法抽象出来。

关键代码:在抽象类实现,其他步骤在子类实现。

var Games = function () {}

Games.prototype.initialize = function () {}; // 抽象方法,需要子类重写
Games.prototype.startPlay = function () {}; // 抽象方法,需要子类重写
Games.prototype.endPlay = function () {}; // 抽象方法,需要子类重写

Games.prototype.play = function () {
  this.initialize(); // 初始化游戏
  this.startPlay(); // 开始游戏
  this.endPlay(); // 结束游戏
};

// 篮球游戏类
var BasketBall = function () {};
BasketBall.prototype = new Games();

BasketBall.prototype.initialize = function () {
  console.log("BasketBall Game Initialized! Start playing.");
};

BasketBall.prototype.startPlay = function () {
  console.log("BasketBall Game Started. Enjoy the game!");
};

BasketBall.prototype.endPlay = function () {
  console.log("BasketBall Game Finished!");
};

// 足球游戏类
var Football = function () {};
Football.prototype = new Games();

Football.prototype.initialize = function () {
  console.log("Football Game Initialized! Start playing.");
};

Football.prototype.startPlay = function () {
  console.log("Football Game Started. Enjoy the game!");
};

Football.prototype.endPlay = function () {
  console.log("Football Game Finished!");
};

var b = new BasketBall();
b.play();