zoukankan      html  css  js  c++  java
  • 第 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();

    结果

  • 相关阅读:
    (转)Java线程:线程的同步与锁
    (转)线程栈模型与线程的变量、线程状态转换
    (转)概念与原理
    Oracle 技术支持之现场优化的思维路径
    oracle复合索引的选择和使用
    oracle中sql执行性能关注点
    oracle中位图索引和B-tree索引的区别
    oracle锁表
    oracle索引的理解
    oracle海量数据中提升创建索引的速度
  • 原文地址:https://www.cnblogs.com/wzq806341010/p/4013521.html
Copyright © 2011-2022 走看看