内衣世界杯|世界杯 德国|1927视界世界杯精彩呈现站|1927m.com

球员使用JavaScript得分

2026-01-21 21:52:52 高清赛事画面 5427

在面向对象的设计中,建模的关键是确定应用程序将如何响应消息。消息可以是对信息的请求、做某事的请求,或者是发生了某些事情的通知。

在您的示例中,应用程序可能会收到一条消息,“下一个问题是什么?”在仔细考虑之后,您可能会决定Quiz对象将负责提供该信息,在这种情况下,您将需要一个具有响应消息的方法的Quiz类。

代码语言:javascript复制function Quiz() {

...

}

Quiz.prototype.nextQuestion = function () {

...

};现在,您还没有真正的问题,所以您的应用程序必须处理的另一个明显的信息是,“添加这个问题的答案选择和正确的答案。”

不要简单地匆忙地向Quiz添加一个新方法来处理新消息;相反,您需要重复思考过程,并决定哪个对象最适合响应。在这种情况下,它还是一个Quiz对象,因为回答“下一个问题是什么?”之前的消息需要一些问题。因此,您可以相应地更新您的Quiz类。(在创建表示问题的结构和跟踪当前问题的索引时,您可以找到下一个问题。)

代码语言:javascript复制function Quiz() {

this.questions = [];

this.index = 0;

}

Quiz.prototype.addQuestion = function (text, choices, answer) {

this.questions.push(new Question(text, choices, answer));

};

Quiz.prototype.nextQuestion = function () {

if (this.index < this.questions.length)

return this.questions[this.index++];

return null;

};

function Question(text, choices, answer) {

this.text = text;

this.choices = choices;

this.answer = answer;

}我将跳过您的应用程序可能需要处理的有关播放器管理的消息,并跳过那些需要您的对象进行协作的消息。

比如说,你的应用程序收到一条消息,“玩家已经用这个答案回答了这个问题。”通过与前面相同的思维过程,您可以决定Quiz对象将处理这个问题,然后添加一个新的方法。

代码语言:javascript复制Quiz.prototype.answer = function (player, question, answer) {

...

};然而,这一次,作为响应该消息的一部分,您需要检查答案是否正确。但是哪个对象可以做到呢?当然,Question结构有正确答案的知识,因此它成为它的责任。Question刚刚从一个简单的结构提升到一个完整的类,它也可以响应消息;在这种情况下,“这个答案正确吗?”因此--

代码语言:javascript复制Question.prototype.isCorrect = function (answer) {

return this.answer === answer;

};然后.

代码语言:javascript复制Quiz.prototype.answer = function (player, question, answer) {

if (question.isCorrect(answer)) {

// score some points for player

}

}正如您所看到的,面向对象的设计不仅仅是查找类并向它们添加方法。您需要考虑这些消息以及它们是如何处理的;换句话说,消息是关键--不是类,不是方法。

祝好运!