是否可以选择切换工厂方法?

ser*_*kye 6 refactoring design-patterns actionscript-3

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

Jon*_*ves 3

简而言之,工厂切换,这就是他们所做的 - 这种风格的工厂的全部要点是将构造逻辑集中到一个地方,而不是让它散布在代码库中。

只要您不使用静态工厂并编码到 IRoomControllerFactory 接口,那么您就可以获得在运行时/测试时替换他的所有常见 OOP 好处 - 毕竟您会说“哟 RoomControllerFactory,给我一个空间”魔法标识符!”

作为对您问题的进一步回答,您可能想问自己为什么需要这么多 RoomController 的具体实例?也许通过支持组合而不是继承,您可以重构事物以使用构建器来代替?