- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个静态日志管理器类,它应该根据参数返回所需记录器的实例。
public static class LogManager {
private static ILoggerFactory Factory { ... }
public static ILogger GetLogger(string name) {
return Factory.Create(name);
}
}
由于必须设置(初始化)ILoggerFactory 的具体实现,我想知道我是否应该只保留对实现类型的引用并在每次请求工厂时返回一个新实例 - 或者是否可以保留实现实例的静态引用。
版本 1
private static Type _factoryType;
public static void SetFactory<TFactory>()
where TFactory : ILoggerFactory, new()
{
_factoryType = typeof(TFactory);
}
private static Factory {
get { return (ILoggerFactory)Activator.CreateInstance(_factoryType);
}
public static ILogger GetLogger(string name) {
return Factory.Create(name);
}
版本 2
private static ILoggerFactory _loggerFactory;
public static void SetFactory<TFactory>()
where TFactory : ILoggerFactory, new()
{
_loggerFactory = (ILoggerFactory)Activator.CreateInstance<TFactory();
}
public static ILogger GetLogger(string name) {
return _loggerFactory.Create(name);
}
最佳答案
可以说,主要区别似乎在于延迟加载:v1 将在调用 GetLogger
时创建记录器类型,而 v2 将在 SetFactory
期间创建记录器。否则没有太大区别。可以将对记录器类型或工厂本身的引用作为私有(private)静态字段保留。
但是,如果这是生产代码,我会完全摆脱这个日志管理器和工厂。相反,我会使用日志记录框架,例如 nlog 或 log4net 直接。这简化了代码并使其更易于维护。在这种情况下构建抽象是过度工程。
关于c# - 静态工厂 - 好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25121335/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!