c#多个类相同的方法

时间:2018-06-16 08:03:02

标签: c# design-patterns

我有4个班级

class A {
    private List<InputSelector> _lstA = new List<InputSelector();
    private List<InputSelector> _lstB = new List<InputSelector();
    private List<InputSelector> _lstC = new List<InputSelector();

    public A(){
        _lstA.Add(new InputSelector{ description = "ItemA"});
        _lstB.Add(new InputSelector{ description = "ItemB"});
        _lstC.Add(new InputSelector{ description = "ItemC"});
    }

    public List<InputSelector> getInputSelector(InputSelectorEnum input) {
        switch(type){
             case(InputSelectorEnum.A):
                 return _lstA;
             case(InputSelectorEnum.B):
                 return _lstB;
             case(InputSelectorEnum.C):
                 return _lstC;
        }
    }
}
[...]
class D {
    private List<InputSelector> _lstA = new List<InputSelector();
    private List<InputSelector> _lstB = new List<InputSelector();
    private List<InputSelector> _lstC = new List<InputSelector();

    public D(){
        _lstA.Add(new InputSelector{ description = "ItemA"});
        _lstB.Add(new InputSelector{ description = "ItemB"});
        _lstC.Add(new InputSelector{ description = "ItemC"});
    }

    public List<InputSelector> getInputSelector(InputSelectorEnum input) {
        switch(type){
             case(InputSelectorEnum.A):
                 return _lstA;
             case(InputSelectorEnum.B):
                 return _lstB;
             case(InputSelectorEnum.C):
                 return _lstC;
        }
    }
}

这显然不是最好的DRY模式,但我无法理解更好的模式。

您对如何简化/更容易修改/扩展有什么建议吗?我不需要为所有4个类重复它?

非常感谢!

1 个答案:

答案 0 :(得分:2)

你的课程完全一样。它们可以合并为一个。

你几乎从不需要完全相同的课程。这是因为类只是对象的蓝图。两个蓝图并不比一个更有用。您的意图可能是创建4个相同的对象ABCD,您希望稍后进行变异,但是您意外创建了4个而是改为。