说我已经有一个静态的工厂方法,像这样一类:内部工厂的静态工厂方法网关 - 代码异味?
public class Table
{
public static Table OpenTable(string path)
{
ITableFactory fac = IoC.Resolve<ITableFactory>();
return fac.OpenTable(path);
}
}
和工厂类,看起来像这样:
internal class TableFactory : ITableFactory
{
internal Table OpenTable(string path)
{
//Check the path
//Do some other stuff
//return a new Table.
}
}
这段代码臭到你?
编辑:另一个问题:是否有一个静态方法的类型只是转发调用工厂是一个好主意?
一些背景资料:我曾经有过TableFactory公共和使用户创建一个新的每次他们需要打开一个表格的时间,但感觉就像一个很长的大厅只开一台。所以我认为我会在Table类上创建一个静态工厂方法,并使工厂类成为内部类,并使用IoC来解决它。
这将是一个小小的问题,如果您决定在第一次调用OpenTable之后的某段时间在运行时切换依赖关系。因为它没有静态的构造函数,所以它也可能不会确定性地存在instantiate fac。 – 2009-06-22 10:14:14