我正在as3上构建简单的应用程序。一种星舰游戏。我想要做的是创建几个不同的星舰。每个人应该有不同的图像(不同的外观),不同的动画集(例如当它飞行,燃烧,损坏时),不同类型的武器以及不同的控制器(例如一个可以由用户管理,另一个可以通过计算机管理,我希望能够为AI控制器和用户控件重复使用相同的船只。
每艘船都是按以下方式创建的:
所以我想做的是:
1)创建StarShip超类,存储HP(每艘船都有),存储空间(同样的原因)
2)为任何其他船只创建继承的类...(它将包含渲染器 - (负责显示部分),武器,动画集等)
您如何看待这种构图方式?也许最好将所有内容放在超类中,然后使用long,long,long构造函数创建实例,例如:
StarShip(惠普:惠普,动画片:DICT,武器:武器,......)
需要建议
答案 0 :(得分:0)
我认为Abstract Factory可以解决它
这里有一个dfart如何使用基于抽象星际争霸的两个工艺类
class StarCraft
{
private HP hp;
private Spatial spatial;
public StarCraft(HP hp,Spatial spatial)
{
// store HP and Spatial for your needs in base class
this.hp = hp;
this.spatial = spatial;
}
// must be implemented in derived classes
public abstract void Init();
}
internal class TurboStarCraft : StarCraft
{
private Render render;
private OtherComponents otherComponents;
public TurboStarCraft(HP hp, Spatial spatial,Render render, OtherComponents otherComponents) : base(hp, spatial)
{
this.render = render;
this.otherComponents = otherComponents;
}
public void Init()
{
// init somehow;
}
}
internal class SuperStarCraft : StarCraft
{
private Render render;
private OtherComponents otherComponents;
public SuperStarCraft(HP hp, Spatial spatial,Render render, OtherComponents otherComponents) : base(hp, spatial)
{
this.render = render;
this.otherComponents = otherComponents;
}
public void Init()
{
// init somehow;
}
}
class StarCraftFacroty
{
public StarCraft Create(const int craftType)
{
if(craftType == SUPERCRAFT)
{
return new SuperStarCraft(hp, spatial, otherCompenents);
}
if(craftType == TURBOCRAFT)
{
return new TurboStarCraft(hp, spatial, otherCompenents);
}
}
}