【发布时间】:2021-08-06 15:42:33
【问题描述】:
在我的代码库中有一个现有的 ConnectionFactory 用于多个地方。我最近添加了 AdvancedConnection,它是 Connection 类的扩展。 在 AdvancedConnectionFactory 中,在 CreateAdvancedConnection 中我想使用与 ConnectionFactory 中相同的模板逻辑。然后返回带有选项的 AdvancedConnection 的新实例。我的 AddTemplate 逻辑很大,我不想复制它。在 AdvancedConnectionFactory 中使用 AddTemplate 逻辑的推荐方式是什么?
public static class ConnectionFactory
{
public static Connection CreateConnection(Options options)
{
return new IntermediateMethod1(options);
}
private static Connection IntermediateMethod1(Options options)
{
AddTemplate(options);
return new Connection(options);
}
private static void AddTemplate(Options options)
{
// do some templating stuff on the connection string
options.ConnectionString = "some templated string";
}
}
public static class AdvancedConnectionFactory
{
public static AdvancedConnection CreateAdvancedConnection(Options options)
{
// Need to use the same logic of AddTemplate from ConnectionFactory
return new AdvancedConnection(options);
}
}
【问题讨论】:
-
如果您只返回单个类(连接)的实例,不确定为什么要使用工厂类。如果 Connection 是 AdvancedConnection 的基类,则应将代码添加到 ConnectionFactory.CreateConnection 以根据选项的值返回 Connection 或 AdvancedConnection 的实例。这就是工厂模式的用途。
-
取决于你想要做什么,这对于Stack Exchange Code Review来说可能是一个更好的问题
标签: c# .net architecture refactoring