actionscript-3 - 是否有替代工厂方法的替代方法?

标签 actionscript-3 design-patterns refactoring

我看到了很多,我想知道是否有一种方法可以很好地重构它以避免大规模切换?这是工厂中的一个方法: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/

相关文章:

java - 抽象迭代对象转换

c++ - 在 C/C++ 中检测多余的#include?

c++ - 现代 C 和 C++ 中是否不推荐使用 f(void)?

java - 如何重构程序启动代码?

javascript - Flash ExternalInterface 是否有等效于 removeCallback 的方法?

actionscript-3 - 将文本转换为具有透明背景的位图或影片剪辑

android - MVP和Android处理Lifecycle事件,UI逻辑在哪里做

flash - AS3 JSON解析

apache-flex - 如何在 OSMF 中播放 flv 格式的 byteArray?

java - 两个服务器,每个服务器用于 HTML 和 Java Jersey Rest API 或单个 Tomcat Web 应用程序