设计模式之简单工厂模式

面向对象语言通过封装、继承、多态把程序的耦合度降低,而设计模式就是使得程序更加的灵活,容易修改,并且易于复用。
所以设计模式是程序编程的重要内容。
简单工厂模式,根据参数的不同返回不同类的实例,并且专门定义一个类来创建其他类的实例(也就是工厂类Factory),而被创建的实例通常是同一个类的父类。
结构t图
在这里插入图片描述
工厂类(Factory):工厂类生产实例

抽象产品(AbstractProduct):抽象类或接口,用于规定其派生类的具体要求

具体产品(Product):抽象类的派生方法,用于满足抽象类的方法

   class Program
    {
        static void Main(string[] args)
        {
            Vehicle v;
            v = VehicleFactory.CreateVehicle("汽车");
            v.GetOff();
            Console.ReadLine();
        }
    }
    class VehicleFactory
    {
        public static Vehicle CreateVehicle(string name)
        {
            Vehicle veh;
            if (name == "摩托车")
            {
                veh = new Motorbike();
                return veh;
            }
            if (name == "汽车")
            {
                veh = new Car();
                return veh;
            }
            return null;

            //Vehicle veh = null;
            //switch (name)
            //{
            //    case "摩托车":
            //        veh = new Motorbike();
            //        break;
            //    case "汽车":
            //        veh = new Car();
            //        break;
            //}
            //return veh;
        }

    }
    abstract class Vehicle//交通工具
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public abstract void GetOn();//上车
        public abstract void GetOff();//下车
        public abstract void Accelerate();//加速
        public abstract void Brake();//刹车
        public abstract void Turn();//转向


    }
    class Motorbike : Vehicle//摩托车
    {
         public override void GetOn()
        {
            Console.WriteLine("上摩托车");
        }//上车
        override public void GetOff()
        {
            Console.WriteLine("下摩托车");
        }//下车
        override public void Accelerate()
        {
            Console.WriteLine("摩托车加速");
        }//加速
        override public void Brake()//刹车
        {
            Console.WriteLine("摩托车刹车");
        }
        override public void Turn()//转向
        {
            Console.WriteLine("摩托车转向");
        }
    }
    class Car:Vehicle//汽车
    {
        override public void GetOn()
        {
            Console.WriteLine("上汽车");
        }//上车
        override public void GetOff()
        {
            Console.WriteLine("下汽车");
        }//下车
        override public void Accelerate()
        {
            Console.WriteLine("汽车加速");
        }//加速
        override public void Brake()//刹车
        {
            Console.WriteLine("汽车刹车");
        }
        override public void Turn()//转向
        {
            Console.WriteLine("汽车转向");
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值