坦克大战-抽象工厂实现(c#)

本文通过C#代码示例,详细介绍了抽象工厂模式在坦克大战游戏开发中的应用。实现了不同规格的坦克(50型和70型),包括射击和移动功能,展示了如何使用抽象工厂模式来创建具有特定规格的坦克实例。

抽象工厂实现坦克大战java实现)

抽象工厂实现坦克大战c#实现)

抽象工厂实现坦克大战c++实现)

 代码

using System;

namespace 抽象工厂
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Client client = new Client();
            client.main();
            Console.ReadLine();
        }
    }

    //--------------------------工具层------------------------------------------------
    public class Guige
    {
        public Guige(string guige)
        {
            this.guige = guige;
        }
        private string guige;
        public string get()
        {
            return guige;
        }
    }
    public abstract class Function
    {
        protected Guige guige;
        public void exe()
        {
            Console.WriteLine("动作:" + getFunction() + " 规格:" + guige.get());
        }
        public abstract string getFunction();
    }
    //--------------------------抽象层------------------------------------------------
    interface IFactory
    {
        Shot createShot();
        Run createRun();
    }
    interface ITank
    {
        void exe();
    }
    //--------------------------实体层------------------------------------------------
    class Tank: ITank
    {
        public Tank(Shot shot, Run run)
        {
            this.shot = shot;
            this.run = run;
        }
        public void exe()
        {
            shot.exe();
            run.exe();
        }
        Shot shot;
        Run run;
    }
    public class Shot: Function
    {
        public override string getFunction()
        {
            return "发射";
        }
    }

    public class Run: Function
    {
        public override string getFunction()
        {
            return "跑";
        }
    }
    public class Shot70 : Shot
    {
        public Shot70()
        {
            guige = new Guige("70");
        }
    }
    public class Run70 : Run
    {
        public Run70()
        {
            guige = new Guige("70");
        }
    }
    public class Shot50 : Shot
    {
        public Shot50()
        {
            guige = new Guige("50");
        }
    }
    public class Run50 : Run
    {
        public Run50()
        {
            guige = new Guige("50");
        }
    }
    class Factory70: IFactory
    {
        public Shot createShot()
        {
            return new Shot70();
        }
        public Run createRun()
        {
            return new Run70();
        }
    }
    class Factory50 : IFactory
    {
        public Shot createShot()
        {
            return new Shot50();
        }
        public Run createRun()
        {
            return new Run50();
        }
    }
    //--------------------------客户端------------------------------------------------
    class Client
    {
        public void main() {
            createTank(new Factory50());
            createTank(new Factory70());
        }
        public void createTank(IFactory factory)
        {
            Tank tank = new Tank(factory.createShot(), factory.createRun());
            tank.exe();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值