每个ID系统唯一对象的设计模式

时间:2010-10-05 20:56:24

标签: c# design-patterns inheritance

我有以下课程(例如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 / ...实例。

1 个答案:

答案 0 :(得分:3)

使用泛型。代码/伪代码:

class UniquePattern<T>
{
    private static Dictionary<int, T> idLookup;
    ....
    private T(id) {...}
    public static T Get(id) 
    {
       ...
    }
}