抽象工厂模式示例代码

游戏场景工厂模式


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

    //道路

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

        }

    }

抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖的对象的方式,而无需指定它们具体的类。这种模式隐藏了其实现细节,只暴露一个接口供客户端使用。 以下是一个简单的Java抽象工厂模式示例代码,假设我们有一个饮料系统,需要创建各种类型的饮料: ```java // 定义接口,代表饮料工厂 interface BeverageFactory { // 创建一种饮料 Beverage createBeverage(); } // 具体的饮料工厂,如咖啡厂、茶厂等 class CoffeeFactory implements BeverageFactory { @Override public Beverage createBeverage() { return new Coffee(); } } class TeaFactory implements BeverageFactory { @Override public Beverage createBeverage() { return new Tea(); } } // 客户端无需关心具体是哪一种饮料工厂 class Client { private BeverageFactory factory; public void setFactory(BeverageFactory factory) { this.factory = factory; } public void serveDrink() { Beverage beverage = factory.createBeverage(); System.out.println("Serving " + beverage.getDescription()); } } public class Main { public static void main(String[] args) { // 创建并设置客户端使用的工厂 Client client = new Client(); client.setFactory(new CoffeeFactory()); // 通过工厂创建饮料并服务 client.serveDrink(); // 输出:Serving Coffee // 更换工厂,切换饮料类型 client.setFactory(new TeaFactory()); client.serveDrink(); // 输出:Serving Tea } } ``` 在这个例子中,`Client`不知道具体的`CoffeeFactory`还是`TeaFactory`,只需它们都实现了相同的`BeverageFactory`接口。这使得代码更易于维护和扩展,如果需要添加新的饮料类型,只需要添加一个新的工厂即可。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值