public
abstract class Road
{
}
public abstract class House
{
}
public
abstract class Role
{
}
public class ClassicRoad : Road
{
}
public class
ClassicHouse : House
{
}
public class ClassicRole : Role
{
}
public class ModernRoad : Road
{
}
public class
ModernHouse : House
{
}
public class ModernRole : Role
{
}
public abstract class SceneFactory
{
public abstract
Road CreateRoad();
public abstract House CreateHouse();
public abstract Role CreateRole();
}
public class
ClassicSceneFactory
{
public Road CreateRoad()
{
return new ClassicRoad();
}
public House CreateHouse()
{
return new ClassicHouse();
}
public Role
CreateRole()
{
return new ClassicRole();
}
}
public
class ModernSceneFactory
{
public Road CreateRoad()
{
return new ModernRoad();
}
public House CreateHouse()
{
return new ModernHouse();
}
public Role
CreateRole()
{
return new ModernRole();
}
}
class GameManager
{
private SceneFactory _factory =
null;
private Road _road = null;
private House _house =
null;
private Role _role = null;
public
GameManager(SceneFactory factory)
{
this._factory =
factory;
}
public void CreateScene()
{
_road = _factory.CreateRoad();
_house =
_factory.CreateHouse();
_role = _factory.CreateRole();
}
public void Run()
{
_role.WalkAlone(_road);
_role.Enter(_house);
...
}
本文介绍了一种使用工厂模式创建不同类型游戏场景的方法。通过抽象出SceneFactory类来定义创建Road(道路)、House(房屋)和Role(角色)的接口,并通过具体实现如ClassicSceneFactory和ModernSceneFactory来创建经典风格或现代风格的游戏元素。GameManager类负责根据所选的工厂实例化具体的场景元素。
1019

被折叠的 条评论
为什么被折叠?



