我注意到,當前不久使用類似XNA/C#(遊戲引擎)的東西時,您只需將組件添加到對象中,併爲其提供了額外的功能。例如:有沒有像裝飾者混合的觀察者那樣的設計模式?
類飛船具有組件,可碰撞,重力,控制更多...
通常,這些組件實現IUpdatable/IDrawable接口或DrawableGameComponent或別的東西:https://gamedev.stackexchange.com/questions/20918/what-happens-when-i-implement-iupdateable-or-idrawable-in-xna
當需要更新/繪製或者其他「事件」時,所有的組件都會被調用,並且在這些組件上有這些事件,這讓我想到了觀察者模式。然而,這些功能看起來像是在「裝飾」主類。
這是一個已知的模式?這叫什麼?這是一個超越遊戲開發使用的好模式嗎?我標記JavaScript的原因是因爲我在考慮在JS中做這樣的事情,我想知道是否有人看到有人做類似的事情。
它可能是這個樣子:然後
function Watcher() {
this.components = [];
this.update() = function() {
for (component in this.components) {
if (typeof component.update === "function") {
component.update();
}
}
};
}
function Component() {
this.update = function() {
};
}
function Wiggle(obj) {
_.extend(this, Component.prototype);
this.obj = obj;
this.wiggled = false;
this.update = function() {
if (this.wiggled) {
this.obj.x -= 1;
} else {
this.obj.x += 1;
}
wiggled = !wiggled;
};
}
function Car() {
this.x = 0;
_.extend(this, Watcher.prototype);
this.components.push(new Wiggle(this));
}
活動可能會引發和所有的汽車部件將被更新。
這可以工作!我也將其確定爲行動/事件偵聽器。是的,行動是有限的,你可以添加一個功能,讓你添加更多的「行動」或「事件」。我只是想接受你的!哈 :) – Parris