序言:我对Javascript有点新鲜。我目前正在与CraftyJS建立游戏(如果重要的话)。我正在制作类似于RPG的东西。
我想为一组可以指定向用户显示的消息建模。这些可以是:
在像C#或Java这样的语言中,我可能会选择将其建模为Message
类(可能包含头像/选择的字段),或者使用子类,或者作为我的特定消息类型的接口实施
在Javascript中,类的结构不同。对此进行建模的正确方法是什么?我现在看到几个选项:
{ text: "blah", choices: [ ... ] }
new Message(text, avatar, choices)
由于我的游戏是数据驱动的,因此用户将创建JSON(可能是手动)并指定消息字段。类的一个小优点是,我强制用户在构造函数中指定所有必需的字段(尽管如果我只使用匿名对象,我仍然可以验证没有类的消息)。
我有哪些选择和权衡(或者我应该在这里使用什么设计?)
答案 0 :(得分:0)
如果消息“facility”已打开(“将来可能会有更多类型”),那么您可能想要研究一种不同的方法:
有一个用户界面的类,它暴露了适当的方法来操纵它,例如:
function MessageUi() {
....
}
MessageUi.prototype.setText = function(text) { ... }
MessageUi.prototype.setPicture = function(imgUrl) { ... }
MessageUi.prototype.setChoices = function(choicesArray) { ... }
MessageUi.prototype.show = function(callback) { ... }
// and so on
实现单个方法需要消息类,比如render(ui)
。示例用法是:
对于简单的文字案例:
var msg = {
render: function(ui) {
ui.setText("My daddy used to hide...");
ui.show(); // no callback; clicking just goes on
}
};
对于选择案例:
var msg = {
render: function(ui) {
ui.setText("Maria! So nice to meet you!");
ui.setChoices([
{value: 1, text: "Yes, sir. Very nice to meet you...."},
...
]);
ui.show(function(choice) { // callback gets selected choice
...
});
}
};
由于需要新类型的消息,现有消息不需要修改。您只能将方法添加到MessageUi
,新的消息类型将使用它们。
只是一些想法,这不是一个“最终”解决方案(问题是完全开放的)。玩得开心玩游戏吧!