抽象工厂
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace abstractFactory
{
class abstractFactory //第153行 和 15行 扩展就可以了
{
static void Main(string[] args)
{
GameManager g = new GameManager(new ModernFacilityFactory());
/*
GameManager g = new GameManager(new ClassicFacilityFactory());
*/
g.BuildGameFacility();
g.Run();
}
}
//客户端程序
class GameManager
{
FacilityFactory facilityFactory;
Road road;
Building build;
Tunnel tuunel;
Jungle jungle;
public GameManager(FacilityFactory facilityFactory)
{
this.facilityFactory = facilityFactory;
}
public void BuildGameFacility()
{
road = facilityFactory.CreateRoad();
build = facilityFactory.CreateBuilding();
tuunel = facilityFactory.CreateTunnel();
jungle = facilityFactory.CreateJungle();
}
public void Run()
{
//road.AAA();
//build.BBB(road);
//tuunel.CCC();
//jungle.DDD();
}
}
public abstract class FacilityFactory
{
public abstract Road CreateRoad();
public abstract Building CreateBuilding();
public abstract Tunnel CreateTunnel();
public abstract Jungle CreateJungle();
}
//道路
public abstract class Road
{
}
public abstract class Building
{
}
public abstract class Tunnel
{
}
public abstract class Jungle
{
}
//
public class ModernRoad : Road
{
}
public class ModernBuilding : Building
{
}
public class ModernTunnel : Tunnel
{
}
public class ModernJungle : Jungle
{
}
public class ModernFacilityFactory : FacilityFactory
{
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();
}
}
/*
只需要在这里 维护一套CLASSIC古典风格的 跟 130 差不多
*/
}