首页 > 代码库 > 【2016-10-17】【坚持学习】【Day8】【工厂方法模式】

【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();

 

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