• 设计模式之抽象工厂模式


    1、类图

    2、建项目就不一一说了,请见设计模式之简单工厂

    ……………………………………

    3、 新建Logger接口:日志记录器接口,充当抽象产品角色。

    namespace FactoryMethodSample

    {

        interface Logger

        {

            void WriteLog();

        }

    }

    4、新建DatabaseLogger类:数据库日志记录器,充当具体产品角色。

    using System;

    namespace FactoryMethodSample

    {

        class DatabaseLogger : Logger 

        {

        public void WriteLog()

            {

        Console.WriteLine("数据库日志记录。");

        }

        }

    }

    5、 新建FileLogger类:文件日志金路器,充当具体产品角色。

    using System;

    namespace FactoryMethodSample

    {

        class FileLogger : Logger 

        {

            public void WriteLog()

            {

        Console.WriteLine("文件日志记录。");

        }

        }

    }

    6、 新建LoggerFactory接口;日志记录器工厂接口,充当抽象工厂角色。

    namespace FactoryMethodSample

    {

        interface LoggerFactory

        {

            Logger CreateLogger();

        }

    }

    7、新建DatabaseLoggerFactory类:数据库日志记录器工厂类,充当具体工厂角色。

    namespace FactoryMethodSample

    {

        class DatabaseLoggerFactory : LoggerFactory

        {

        public Logger CreateLogger()

            {

    //连接数据库,代码省略

    //创建数据库日志记录器对象

    Logger logger = new DatabaseLogger();

    //初始化数据库日志记录器,代码省略

    return logger;

        }

        }

    }

    8、 新建FileLoggerFactory类:文件日志记录器工厂类,充当具体工厂角色。

    namespace FactoryMethodSample

    {

        class FileLoggerFactory : LoggerFactory

        {

        public Logger CreateLogger()

            {

                //创建文件日志记录器对象

    Logger logger = new FileLogger();

    //创建文件,代码省略

    return logger;

        }

        }

    }

    9、客服端

    using System;

    using System.Configuration;

    using System.Reflection; 

    namespace FactoryMethodSample

    {

        class Program

        {

            static void Main(string[] args)

            {

                /*

                LoggerFactory factory;

                Logger logger;

                factory = new FileLoggerFactory(); //可引入配置文件实现

                logger = factory.CreateLogger();

                logger.WriteLog();

                */

                LoggerFactory factory;

                Logger logger;

                //读取配置文件

                string factoryString = ConfigurationManager.AppSettings["factory"];

                //反射生成对象

                factory = (LoggerFactory)Assembly.Load("FactoryMethodSample").CreateInstance(factoryString);

                logger = factory.CreateLogger();

                logger.WriteLog();

                Console.Read();

            }

        }

    }

    10、 配置文件:

    <?xml version="1.0" encoding="utf-8" ?>

    <configuration>

      <appSettings>

        <add key="factory" value="FactoryMethodSample.FileLoggerFactory"/>

      </appSettings>

    </configuration>

  • 相关阅读:
    构建VIM下的C++编程环境
    [原]在Fedora 20环境下安装系统内核源代码
    [转]程序员技术练级攻略
    [原]Fedora 20安装记录
    【转】ODBC、OLE DB、 ADO的区别
    C# & SQL Server大数据量插入方式对比
    字符串散列函数示例
    [转]wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)
    SOCKET:SO_LINGER 选项
    TCP三次握手与四次挥手
  • 原文地址:https://www.cnblogs.com/cqxhl/p/6097177.html
Copyright © 2020-2023  润新知