设计模式(五):工厂方法模式

工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

    /// <summary>
    /// 雷锋
    /// </summary>
    class LeiFeng
    {
        private string name = string.Empty;
        public string Name {
            get { return name; }
            set { name = value; }
        }

        public virtual void Sweep()
        {
            Console.WriteLine("扫地");
        }

        public virtual void Wash()
        {
            Console.WriteLine("洗衣");
        }

        public virtual void BuyRice()
        {
            Console.WriteLine("买米");
        }
    }
    /// <summary>
    /// 学雷锋的大学生
    /// </summary>
    class Undergraduate : LeiFeng
    {
        public override void Sweep()
        {
            Console.WriteLine("大学生"+Name+"来扫地");
        }

        public override void Wash()
        {
            Console.WriteLine("大学生" + Name + "来洗衣");
        }

        public override void BuyRice()
        {
            Console.WriteLine("大学生" + Name + "来买米");
        }
    }
    /// <summary>
    /// 学雷锋的志愿者
    /// </summary>
    class Volunteer : LeiFeng
    {
        public override void Sweep()
        {
            Console.WriteLine("志愿者" + Name + "来扫地");
        }

        public override void Wash()
        {
            Console.WriteLine("志愿者" + Name + "来洗衣");
        }

        public override void BuyRice()
        {
            Console.WriteLine("志愿者" + Name + "来买米");
        }
    }
    /// <summary>
    /// 雷锋工厂
    /// </summary>
    interface IFactory
    {
        LeiFeng CreateLeiFeng();
    }
    /// <summary>
    /// 学雷锋的大学生工厂
    /// </summary>
    class UndergraduateFactory : IFactory
    {
        public LeiFeng CreateLeiFeng()
        {
            return new Undergraduate();
        }
    }
    /// <summary>
    /// 社区志愿者工厂
    /// </summary>
    class VolunteerFactory : IFactory
    {
        public LeiFeng CreateLeiFeng()
        {
            return new Volunteer();
        }
    }
    /// <summary>
    /// 程序主体
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            IFactory factory = new UndergraduateFactory();
            var leifeng = factory.CreateLeiFeng();
            leifeng.Name = " 张三 ";
            leifeng.Sweep();

            IFactory factory1 = new VolunteerFactory();
            var leifeng1 = factory1.CreateLeiFeng();
            leifeng1.Name = " 李四 ";
            leifeng1.BuyRice();
            Console.Read();
        }
    }

运行结果:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值