现在的位置: 首页 > 综合 > 正文

抽象工厂模式示例代码

2018年01月18日 ⁄ 综合 ⁄ 共 2057字 ⁄ 字号 评论关闭

游戏开发中的多风格系列场景,比如道路,房屋,管道等

    //道路

    public abstract class Road

    {

    }

    //房屋

    public abstract class Building

    {

    }

    //地道

    public abstract class Tunnel

    {

    }

    //丛林

    public abstract class Jungle

    {

    }

     public abstract class FacilitiesFactory

     {

        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 abstract class ModernFacilitiesFactory : FacilitiesFactory

    {

        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

    {

        FacilitiesFactory facilitiesFactory;

        Road road;

        Building building;

        Tunnel tunnel;

        Jungle jungle;

        public GameManager(FacilitiesFactory 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.bbb(road);

            tunnel.ccc();

            jungle.ddd(tunnel);

        }

    }

    class App

    {

        public static void Main()

        {

            GameManager g = new GameManager(new ModernFacilitiesFactory());

            g.BuildGameFacilities();

            g.Run();

        }

    }

抱歉!评论已关闭.