• 第 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();

    结果

  • 相关阅读:
    Python form...import...和import的区别(自己理解的)
    ! cocos2d 同一个sprite的触控问题
    cocosjs 触摸
    打包apk
    单例模式
    策略模式
    工厂模式
    cocos3 singleton
    tiledmap2
    quick cocos 暂停场景
  • 原文地址:https://www.cnblogs.com/wzq806341010/p/4013521.html
Copyright © 2020-2023  润新知