简单工厂模式和工厂模式的实现例子

来源:互联网 发布:淘宝助理验证中心 编辑:程序博客网 时间:2024/05/16 15:33


using System;using System.Collections.Generic;using System.Text;namespace 工厂方法_雷锋工厂{    class Program    {        static void Main(string[] args)        {            //            //基本方式:薛磊风代表大学生学习雷锋            LeiFeng xueleifeng = new Undergraduate();            xueleifeng.BuyRice();            xueleifeng.Sweep();            xueleifeng.Wash();            LeiFeng student1 = new Undergraduate();            student1.BuyRice();            LeiFeng student2 = new Undergraduate();            student2.Sweep();            LeiFeng student3 = new Undergraduate();            student3.Wash();            //简单工厂模式            LeiFeng studentA = SimpleFactory.CreateLeiFeng("学雷锋的大学生");            studentA.BuyRice();            LeiFeng studentB = SimpleFactory.CreateLeiFeng("学雷锋的大学生");            studentB.Sweep();            LeiFeng studentC = SimpleFactory.CreateLeiFeng("学雷锋的大学生");            studentC.Wash();            //工厂方法模式            IFactory factory = new UndergraduateFactory();            LeiFeng student = factory.CreateLeiFeng();//通过接口函数创建对象            student.BuyRice();            student.Sweep();            student.Wash();            Console.Read();        }    }    //雷锋    class LeiFeng    {        public void Sweep()        {            Console.WriteLine("扫地");        }        public void Wash()        {            Console.WriteLine("洗衣");        }        public void BuyRice()        {            Console.WriteLine("买米");        }    }    //学雷锋的大学生    class Undergraduate : LeiFeng    { }    //社区志愿者    class Volunteer : LeiFeng    { }    //简单雷锋工厂    class SimpleFactory    {        public static LeiFeng CreateLeiFeng(string type)        {            LeiFeng result = null;            switch (type)            {                case "学雷锋的大学生":                    result = new Undergraduate();                    break;                case "社区志愿者":                    result = new Volunteer();                    break;            }            return result;        }    }    //雷锋工厂    interface IFactory    {        LeiFeng CreateLeiFeng();    }    //学雷锋的大学生工厂    class UndergraduateFactory : IFactory    {        public LeiFeng CreateLeiFeng()        {            return new Undergraduate();        }    }    //社区志愿者工厂    class VolunteerFactory : IFactory    {        public LeiFeng CreateLeiFeng()        {            return new Volunteer();        }    }}