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)
简而言之,工厂切换,这就是他们所做的 - 这种风格的工厂的全部要点是将构造逻辑集中到一个地方,而不是让它散布在代码库中。
只要您不使用静态工厂并编码到 IRoomControllerFactory 接口,那么您就可以获得在运行时/测试时替换他的所有常见 OOP 好处 - 毕竟您会说“哟 RoomControllerFactory,给我一个空间”魔法标识符!”
作为对您问题的进一步回答,您可能想问自己为什么需要这么多 RoomController 的具体实例?也许通过支持组合而不是继承,您可以重构事物以使用构建器来代替?