我看到這很多,我想知道是否有一種方法來重構這很好,以避免大規模切換?這是工廠中的一個方法: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);
我不知道動作,但我會使用散列表來註冊不同位置的類型與RoomControllerFactory inturn可以實例化右房間控制器。 soooo在C#中最初 roomControllerFactories [location.getType()] = new RoomOneControllerFactory();後面跟着:roomControllerFactories [location.getType()] .create(location,data,view); – Polity
這些RoomController實例是否在程序中多次實例化?例如,如果它是一個迷宮,你會有多個TeeIntersectionRoomController實例嗎?或者這些實例在遊戲中是絕對獨一無二的,例如BuckinghamPalaceThroneRoomController?這可能會影響最佳解決方案... – jpwrunyan
它們存在於同一時間,即當您前往該位置時,但目前不止一次實例化,也就是說,如果您返回roomone,我們將重新創建房間1.但也有一些房間是獨一無二的,一些房間足夠抽象,可以用來代表多個房間,例如一個房間類型的商店可以用於許多不同的位置,只是通過銷售數據的東西,但房間類型自己的房間只會使用一次。我希望這一點很清楚。 :) – serenskye