我有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个类重复它?
非常感谢!
答案 0 :(得分:2)
你的课程完全一样。它们可以合并为一个。
你几乎从不需要完全相同的课程。这是因为类只是对象的蓝图。两个蓝图并不比一个更有用。您的意图可能是创建4个相同的对象A
,B
,C
和D
,您希望稍后进行变异,但是您意外创建了4个而是改为。