我有以下课程(例如C#)
class A
{
private static Dictionary<int, A> idLookup;
....
private A(id) {...}
public static A Get(id)
{
//does some magic
if (...) { return idLookup[id]; }
else { A a = new A(id); idLookup[a.id] = a; return a; }
}
}
class B
{
private static Dictionary<int, B> idLookup;
....
private B(id) {...}
public static B Get(id)
{
//does some magic
if (...) { return idLookup[id]; }
else { B b = new B(id); idLookup[b.id] = b; return b; }
}
}
... and so on
是否存在可以删除所有重复代码的设计模式(正在进行继承但有点混乱)?
上述功能保证id只存在1个A / B / ...实例。
答案 0 :(得分:3)
使用泛型。代码/伪代码:
class UniquePattern<T>
{
private static Dictionary<int, T> idLookup;
....
private T(id) {...}
public static T Get(id)
{
...
}
}