我看到了很多,我想知道是否有一种方法可以很好地重构它以避免大规模切换?这是工厂中的一个方法:RoomControllerFactory,根据其类型实例化游戏位置。这是工厂方法中开关的示例:
switch (location.getType())
{
case Location.ROOMONE:
return new RoomOneController(location, data, view);
case Location.ROOMTWO:
return new RoomTwoController(location, data, view);
case Location.ROOMTHREE:
return new RoomThreeController(location, data, view);
最佳答案
看到您正在使用 hack 来提供枚举功能 - 为什么不向您的枚举添加一个方法:
public static const ROOMONE : LocationType = new LocationType("locationone",
function(...) : RoomController {
return new RoomOneController
}
);
(请原谅任何愚蠢的错误 - actionscript 不是我的母语!)
在java中,我会做类似的事情:
public enum LocationType {
ROOMONE {
@Override
public RoomController getRoomController() {
return new RoomOneController();
}
};
public abstract RoomController getRoomController();
}
关于actionscript-3 - 是否有替代工厂方法的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993137/