抽象工厂

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 差不多
    */

   
}

posted @ 2009-07-10 12:21  Ry5  阅读(156)  评论(0编辑  收藏  举报