Flash As3游戏:课堂提问
我正在用flash develop和flash cs5在as3中制作一个游戏。一切都是面向对象的。我想知道,我是否应该有一个“网关”类,该类具有对其他类的所有实例化的属性引用,并且我只将这个网关类传递给新对象,这样它们就可以访问每个类。像这样:Flash As3游戏:课堂提问,flash,actionscript-3,Flash,Actionscript 3,我正在用flash develop和flash cs5在as3中制作一个游戏。一切都是面向对象的。我想知道,我是否应该有一个“网关”类,该类具有对其他类的所有实例化的属性引用,并且我只将这个网关类传递给新对象,这样它们就可以访问每个类。像这样: var block:Block = new Block(gateway); //In the block class: this.gateway.player.setHealth(100); //Or: this.gateway.input.
var block:Block = new Block(gateway);
//In the block class:
this.gateway.player.setHealth(100);
//Or:
this.gateway.input.lock();
这像是一个单身模式还是什么?我应该这样做吗?我以前用过这个主意。我用它作为模型。数据模型-或dumb存储对象的有效主干-或对对象的引用。这是很有用的,因为你总是可以找到一些东西,而不必走遍你的课堂 我将它作为一个单例使用,因此您不必担心可能会创建新版本的数据模型并引用空白对象。有点能让你几个小时都不挠头。 它看起来像这样:
package com.strangemother.models.DataModel
{
private static var _dataModel:DataModel;
/**
an example of storing you items.
*/
public var character:Character;
public static function getInstance():DataModel
{
if(!_dataModel)
{
_dataModel= new DataModel(SingletonLock);
return _dataModel;
}
public function DataModel(lock:Class)
{
if(!lock is SingletonLock)
{
throw new Error("DataModel is a singleton. Use DataModel.getInstance() to use.");
}
}
}
添加@AttackingHobo:
this is a one ( 1 ) this is the letter L lowercase ( l )
也许这是一个快速尝试某事的好方法,但从长远来看,网关对象将变得如此巨大,不同对象之间的关系将如此之多,以至于它将承受自身的重量
此外,面向对象的一个要点是将部分代码的访问封装到只需要它的对象。这个概念被称为。看起来你已经创建了一个。有其他实现控制反转的方法,例如。马丁·福勒(Martin Fowler)对整个概念都有自己的见解,你应该阅读它,然后自己决定。DataModel有点像DataMode1。我只是想指出这一点。我并没有说它看起来和DataMode1一模一样,只是有点像。:)