我是 C# 开发人员,我想使用工厂模式来创建代表硬盘上的文件或目录的对象。FileInfo 和 DirectoryInfo 是 .NET 中用于此目的的类,但我希望拥有自己的 IFileInfo 和 IDirectoryInfo 接口来包装它们,而不是它们。使用自定义接口而不是内置类的原因是因为我想添加一些额外的属性,例如文件外壳图标等......
所以我想使用工厂模式为文件/目录路径的给定字符串创建 IFileInfo 和 IDirectoryInfo 的实例。
所以工厂类看起来像:
public class MyFileInfoFactory
{
IFileInfo Create(string filePath)
{
System.IO.FileInfo file = new System.IO.FileInfo(filePath);
// turn FileInfo to my IFileInfo etc...
}
}
现在查看 System.IO.FileInfo 文档(FileInfo MSDN)我看到有几个可能的异常可以抛出。我的问题是我应该在工厂 Create() 方法中处理所有这些异常吗?还是应该让它们向上传播到调用 MyFileInfoFactory.Create() 的任何代码?
如果第一个解决方案是可行的,那么下一步是什么?例如,我应该返回 null 还是可能抛出一些自定义异常,并将 InnerException 属性设置为从 new FileInfo() 构造函数抛出的实际异常?
只是想知道在这个具体场景案例中的最佳实践是什么......