我有多个包含重复代码的类,尤其是成员和最重要的静态方法,它将创建该类的新实例并返回此实例:以前在字典中注册的实例或通过调用构造函数的新实例。
接口是没有选择的,因为我有静态方法。我试图通过引入实现此静态方法的基类来解决该问题,但我找不到正确创建和返回特定子类的方法。
下面是当前情况的代码示例,A 类和 B 类显示重复代码。
public class A
{
private static readonly IDictionary<string, A> Registry = new Dictionary<string, A>();
public string Name { get; set; }
public A(string name)
{
this.Name = name;
}
public static A GetA(string instanceName)
{
lock (Registry)
{
if (!Registry.TryGetValue(instanceName, out var newInstance))
{
newInstance = new A(instanceName);
}
return newInstance;
}
}
}
然后在 B 类中再次有一个成员 Name 和 GetX() 方法。
public class B
{
private static readonly IDictionary<string, B> Registry = new Dictionary<string, B>();
public string Name { get; set; }
public B(string name)
{
this.Name = name;
}
public static B GetB(string instanceName)
{
lock (Registry)
{
if (!Registry.TryGetValue(instanceName, out var newInstance))
{
newInstance = new B(instanceName);
}
return newInstance;
}
}
}
是否有可能通过引入基类或任何其他方式来避免这种代码重复?