• 第 8 章 工厂方法模式


    工厂方法模式:

    定义一个用户创建对象的接口,让子类决定实例化哪一个类,工厂方法是一个类的实例化延迟到了其子类。
     
    工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,
    工厂方法吧简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是要改工厂类的,而现在是修改客户端。

     

        /// <summary>
        /// 雷锋
        /// </summary>
        public class LeiFeng
        {
            public void Wash()
            {
                Console.WriteLine("洗衣");
            }
    
            public void Sweep()
            {
                Console.WriteLine("扫地");
            }
        }
    
        /// <summary>
        /// 大学生
        /// </summary>
        public class Undergraduate : LeiFeng
        {
    
        }
    
        /// <summary>
        /// 社区志愿者
        /// </summary>
        public class CommunityVolunteer : LeiFeng
        {
    
        }
    
        /// <summary>
        /// 雷锋工厂
        /// </summary>
        interface IFactory
        {
            LeiFeng CreateLeiFeng();
        }
    
    
        /// <summary>
        /// 大学生雷锋工厂
        /// </summary>
        public class UndergraduateFactory : IFactory
        {
            public LeiFeng CreateLeiFeng()
            {
                return new Undergraduate();
            }
        }
    
        /// <summary>
        /// 社区志愿者雷锋工厂
        /// </summary>
        public class CommunityVolunteerFactory : IFactory
        {
    
            public LeiFeng CreateLeiFeng()
            {
                return new CommunityVolunteer();
            }
        }

    客户端调用

    IFactory factory = new UndergraduateFactory();
    LeiFeng leifeng = factory.CreateLeiFeng();
    leifeng.Sweep();
    leifeng.Wash();
    
    factory = new CommunityVolunteerFactory();
    leifeng = factory.CreateLeiFeng();
    leifeng.Sweep();
    leifeng.Wash();

    结果

  • 相关阅读:
    前端攻城狮学习笔记九:让你彻底弄清offset
    jquery在线手册
    阻止元素的默认行为
    JS三元运算符
    坐标系与基本图元(1) ~转载天行健 君子当自强而不息
    坐标系与基本图元~转载天行健 君子当自强而不息
    VS常见错误
    ZigZag Conversion
    指针转换(数组退化为指针的三种情况)
    POJ 1985
  • 原文地址:https://www.cnblogs.com/wzq806341010/p/4013521.html
Copyright © 2020-2023  润新知