设计模式:具有设置功能的单例

坏种子

抱歉,标题,我将尽力更好地解释问题。我已经为我的log4net实例创建了一个包装器,并使用以下构造函数实例化了该记录器:

    public MyLogger(string _dbName)
    {
        dbName = _dbName;
        logger = LoggerConfigurator.AddNamedLogger(dbName);
    }

现在的问题是:此构造函数在两个不同的类中实例化,因此某些消息日志被打印两次。仅当先前的实例不存在时,才需要创建一个新实例,否则返回该实例。一种单例模式。问题在于,Singleton模式不接受参数,因此我没有办法通过_dbName遵循最佳做法,我该如何处理?

耶罗恩

如果我对您的理解正确,那么您正在寻找Multiton(维基百科上的Multiton模式)。每个键基本上是一个单例(这是Wikipedia上的C#示例):

using System.Collections.Generic;
using System.Collections.Concurrent;

namespace MyApplication 
{
    class FooMultiton 
    {
        private static readonly ConcurrentDictionary<object, FooMultiton> _instances
        = new ConcurrentDictionary<object, FooMultiton>();

        private FooMultiton() {}

        public static FooMultiton GetInstance(object key) 
        {
            _instances.TryAdd(key, new FooMultiton()); // This would of course be new MyLogger(_dbName)
            return _instances[key];
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单例设计模式

来自分类Dev

设计模式:单例混淆

来自分类Dev

单例设计模式-Java

来自分类Dev

具有单例和工厂模式的Nullpointer

来自分类Dev

了解Java单例设计模式

来自分类Dev

多重继承和单例设计模式

来自分类Dev

具有参数的单例

来自分类Dev

具有同步功能的单例类和静态同步功能之间有什么区别

来自分类Dev

EF的单例设计模式和非同步方法

来自分类Dev

Java单例设计模式与全局变量

来自分类Dev

使用单例设计模式进行序列化

来自分类Dev

如何在C#中实现单例设计模式?

来自分类Dev

单例设计模式和不同类型之间的差异?

来自分类Dev

具有每个值单例的模式的名称是什么?

来自分类Dev

具有静态变量/单例模式的打字稿类

来自分类Dev

ruby实例不具有单例模式的内容辅助(或自动完成)

来自分类Dev

带有令牌的Azure功能单例

来自分类Dev

C#类设计:具有某些具有缓存功能的类的策略模式?

来自分类Dev

具有构造函数参数的单例

来自分类Dev

具有暴露属性的单例

来自分类Dev

具有静态成员实例的单例

来自分类Dev

具有参数的服务的单例

来自分类Dev

具有xib的UIViewController的单例

来自分类Dev

具有基于时间的寿命的单例

来自分类Dev

具有构造函数参数的单例

来自分类Dev

ndb单例模式

来自分类Dev

单例模式说明

来自分类Dev

使用单例模式

来自分类Dev

实现单例模式