• 【2016-10-17】【坚持学习】【Day8】【工厂方法模式】


    工厂方法模式又叫工厂模式,虚拟构造器模式

    定义:

    工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象
    目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类

    结构:

    一个抽象产品类

    多个具体产品类

    一个抽象工厂类

    多个具体工厂类

      interface Product
        {
    
        }
    
        class ConcreteProduct : Product
        {
    
        }
    
        interface Factory
        {
            Product FactoryMethod();
        }
    
        class ConcreteFactory : Factory 
        {
            public Product FactoryMethod() 
            {
                return new ConcreteProduct();
            }
        }

     例子:

      interface LoggerFactory
        {
            Logger CreateLogger();
        }
     class FileLoggerFactory : LoggerFactory 
        {
            public Logger CreateLogger() 
            {
                //创建文件日志记录器对象
                Logger logger = new FileLogger(); 
                //创建文件,代码省略
                return logger;
            }    
        }
     interface Logger
        {
            void WriteLog();
        }
      class FileLogger : Logger 
        {
            public void WriteLog()
            {
                Console.WriteLine("文件日志记录。");
            }
        }
       LoggerFactory factory;
                Logger logger;
                //读取配置文件
                string factoryString = ConfigurationManager.AppSettings["factory"];
                //反射生成对象
                factory = (LoggerFactory)Assembly.Load("FactoryMethodSample").CreateInstance(factoryString);
                logger = factory.CreateLogger();
                logger.WriteLog();

    作者:zscmj
    出处:http://www.cnblogs.com/zscmj/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    不同版本strtotime("2016-09-04")输出不同问题
    Jquery,YUI这个著名js库名称作用的理解
    函数和方法
    js的关联数组
    windows信息
    改centos7的网卡名
    GIT命令
    安装时遇到:正在尝试其它镜像。 http://mirrors.btte.net/centos/7.2.1511/extras/x86_64/repodata/repomd.xml: [Errno 14] curl#6
    本地怎样访问虚拟机上的服务器
    yolo
  • 原文地址:https://www.cnblogs.com/zscmj/p/5971630.html
Copyright © 2020-2023  润新知