处理有依赖关系的系列对象变化
public abstract class Road
{
internal void AAA()
{
throw new System.Exception("The method or operation is not implemented.");
}
}
public abstract class Building
{
internal void CCC(Road road)
{
throw new System.Exception("The method or operation is not implemented.");
}
}
public abstract class Tunnel
{
internal void BBB(Building building)
{
throw new System.Exception("The method or operation is not implemented.");
}
}
public abstract class Jungle
{
internal void DDD(Tunnel tunnel)
{
throw new System.Exception("The method or operation is not implemented.");
}
}
public abstract class FacilitiesFactoy
{
public abstract Road CreateRoad();
public abstract Building CreateBuilding();
public abstract Tunnel CreateTunnel();
public abstract Jungle CreateJungle();
}
//------------------------------------
public class ModernRoad : Road
{
}
public class ModernBuilding : Building
{
}
public class ModernTunnel : Tunnel
{
}
public class ModernJungle : Jungle
{
}
public class ModernFacilities:FacilitiesFactoy
{
public override Road CreateRoad()
{
return new ModernRoad();
}
public override Building CreateBuilding()
{
return new ModernBuilding();
}
public override Tunnel CreateTunnel()
{
return new ModernTunnel();
}
public override Jungle CreateJungle()
{
return new ModernJungle();
}
}
//-----------------------------------
//客户程序
class GameManager
{
FacilitiesFactoy facilitiesFactory;
Road road;
Building building;
Tunnel tunnel;
Jungle jungle;
public GameManager(FacilitiesFactoy facilitiesFactory)
{
this.facilitiesFactory = facilitiesFactory;
}
public void BuildGameFacilities()
{
road = facilitiesFactory.CreateRoad();
building = facilitiesFactory.CreateBuilding();
tunnel = facilitiesFactory.CreateTunnel();
jungle = facilitiesFactory.CreateJungle();
}
public void Run()
{
road.AAA();
building.CCC(road);
tunnel.BBB(building);
jungle.DDD(tunnel);
}
}
class App
{
public static void Main()
{
GameManager g = new GameManager(new ModernFacilities());
g.BuildGameFacilities();
g.Run();
}
}
{
internal void AAA()
{
throw new System.Exception("The method or operation is not implemented.");
}
}
public abstract class Building
{
internal void CCC(Road road)
{
throw new System.Exception("The method or operation is not implemented.");
}
}
public abstract class Tunnel
{
internal void BBB(Building building)
{
throw new System.Exception("The method or operation is not implemented.");
}
}
public abstract class Jungle
{
internal void DDD(Tunnel tunnel)
{
throw new System.Exception("The method or operation is not implemented.");
}
}
public abstract class FacilitiesFactoy
{
public abstract Road CreateRoad();
public abstract Building CreateBuilding();
public abstract Tunnel CreateTunnel();
public abstract Jungle CreateJungle();
}
//------------------------------------
public class ModernRoad : Road
{
}
public class ModernBuilding : Building
{
}
public class ModernTunnel : Tunnel
{
}
public class ModernJungle : Jungle
{
}
public class ModernFacilities:FacilitiesFactoy
{
public override Road CreateRoad()
{
return new ModernRoad();
}
public override Building CreateBuilding()
{
return new ModernBuilding();
}
public override Tunnel CreateTunnel()
{
return new ModernTunnel();
}
public override Jungle CreateJungle()
{
return new ModernJungle();
}
}
//-----------------------------------
//客户程序
class GameManager
{
FacilitiesFactoy facilitiesFactory;
Road road;
Building building;
Tunnel tunnel;
Jungle jungle;
public GameManager(FacilitiesFactoy facilitiesFactory)
{
this.facilitiesFactory = facilitiesFactory;
}
public void BuildGameFacilities()
{
road = facilitiesFactory.CreateRoad();
building = facilitiesFactory.CreateBuilding();
tunnel = facilitiesFactory.CreateTunnel();
jungle = facilitiesFactory.CreateJungle();
}
public void Run()
{
road.AAA();
building.CCC(road);
tunnel.BBB(building);
jungle.DDD(tunnel);
}
}
class App
{
public static void Main()
{
GameManager g = new GameManager(new ModernFacilities());
g.BuildGameFacilities();
g.Run();
}
}
浙公网安备 33010602011771号