抽象工厂模式示例代码


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

    //道路

    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();

        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值