这是什么样的模式(’提供者’)?

在工作中,我们使用的是一种我在GoF书中没有找到的“模式”(但这可能是由于在这个问题上缺乏能力,我只是略去了模式)而且我仍然怀疑。

比方说,如果我们有一个包含项目DataAccess的多项目解决方案,那么管理数据访问。 然后通常我看到它有这样的结构:

Providers (Folder) - DataAccessProvider.cs Interfaces (Folder) - IFileLoader.cs Implementors (Folder) - FileLoader.cs 

这里, FileLoader将是接口IFileLoaderinternal实现,提供者看起来像这样:

 public static class DataAccessProvider { public static IFileLoader FileLoader { get { return new FileLoader(); } } } 

这是什么样的设计模式(如果有的话),除了屏蔽IFileLoader接口的具体实现之外,它的真正用途是什么?

其次,这真的是“好风格”吗? 我想知道,例如,如果有很多电话会发生什么

 string content = DataAccessProvider.FileLoader.LoadContentFromFile("abc.txt"); 

无论何时使用,都会调用new FileLoader() 。 是不是有更优雅的方式来做类似的方法?

在此示例中, DataAccessProvider是简单工厂方法(模式)的示例。 通常你会有一个名为GetFileLoader()CreateFileLoader()而不是Property版本,但结果是一样的。

返回IFileProvider而不是FileProvider的目的是用于依赖性反转,这样就可以编写其他类型的FileProvider并将它们注入应用程序,而无需返工或重新编译依赖于IFileProvider所有对象。 这不是掩盖。

如果关注创建了多少个FileLoader实例,那么就可以对该对象使用Singleton模式。 但是,如果FileLoader是一个轻量级对象,这通常不是问题,因为CLR垃圾收集器会自动为您处理。