LGX.NET
漂泊...
处理有依赖关系的系列对象变化
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();

    }
}
posted on 2006-09-03 23:49  LGX.NET  阅读(138)  评论(0)    收藏  举报