zoukankan      html  css  js  c++  java
  • C#设计模式之工厂方法模式

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    //工厂方法模式实例
    namespace Factory_event
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("工厂方法模式实例:");
                LoggerFactory factory;
                Logger logger;
                factory = new FileLoggerFactory();//可引入配置文件实现
                logger = factory.CreateLogger();
                logger.WriteLog();//结果:文件日志记录
                //
                factory = new DatabaseLoggerFactory();
                logger = factory.CreateLogger();
                logger.WriteLog();//结果:数据库日志记录
                Console.Read();
                /*总结:
                 * 1.如果需要更换日志记录器,则只需要修改客户端代码中具体工厂类的类名即可.
                 * 2.如果需要添加并使用新的日志记录器,只需要对应增加一个新的具体工厂类,
                 * --再在客户端代码中修改具体工厂类类名,原有类库代码无须做任何修改.
                 * 可配置:可通过引入配置文件并使用反射机制,可实现在不修改客户端代码的基础上更换具体工厂类
                 */
            }
        }
    
        /// <summary>
        /// 日志记录接口,充当抽象产品角色
        /// </summary>
        internal interface Logger
        {
            void WriteLog();
        }
        /// <summary>
        /// 数据库日志记录器,充当具体产品角色
        /// </summary>
        class DatabaseLogger:Logger
        {
    
            public void WriteLog()
            {
                Console.WriteLine("数据库记录日志");
            }
        }
        /// <summary>
        /// 文件日志记录器,充当具体产品角色
        /// </summary>
        class FileLogger : Logger
        {
            public void WriteLog()
            {
                Console.WriteLine("文件日志记录");
            }
        }
        /// <summary>
        /// 日志记录器工厂接口
        /// </summary>
        internal interface LoggerFactory
        {
            Logger CreateLogger();//抽象工厂方法
        }
        /// <summary>
        /// 数据库日志记录器工厂类,充当具体工厂角色
        /// </summary>
        class DatabaseLoggerFactory : LoggerFactory
        {
            public Logger CreateLogger()
            {
                //连接数据库
                //创建数据库日志记录对象
                Logger logger=new DatabaseLogger();
                //初始化数据库日志记录器
                return logger;
            }
        }
        /// <summary>
        /// 文件日志记录器工厂类,充当具体工厂角色
        /// </summary>
        class FileLoggerFactory : LoggerFactory
        {
            public Logger CreateLogger()
            {
               //创建日志记录器对象
                Logger logger=new FileLogger();
                //创建文件
                //...
                return logger;      
            }
        }
    
    
    }
  • 相关阅读:
    初识敏捷开发
    【C#】HTTP请求GET,POST(远程证书失效)
    登录验证的js;JS验证邮箱 验证密码
    字符串验证类
    ASP.NET获取客户端信息,获取客户端IP等等
    HttpCookie类
    js获取页面的来源页
    JS URL传中文参数引发的乱码问题
    SQL Server 2008删除或压缩数据库日志的方法
    数据库SQL优化大总结之 百万级数据库优化方案
  • 原文地址:https://www.cnblogs.com/lbonet/p/7145251.html
Copyright © 2011-2022 走看看