在对原型进行了一段时间的修改后,我最终得到了一些方法,这些方法可以更新对象上的布尔标志,然后更新接口并根据新值进行一些处理。这些几乎都是一样的——但是它们更新的值是不同的
例如 - 假设我们有一堆彩色框要更新 - 我可能有一些看起来像这样的方法:
protected void SetBlueBoxVisibility(bool blueBoxVisibility)
{
Project project = LoadProject();
project.ShowBlueBox = blueBoxVisibility
ReDrawSomeThings();
CalcualteSomeStuff();
Project.UpdateBoxStatus();
SaveProject(project);
ShowBlueBoxPanel(blueBoxVisibility);
RaiseStatusUpdated();
}
protected void SetRedBoxVisibility(bool redBoxVisibility)
{
Project project = LoadProject();
project.ShowRedBox = redBoxVisibility
ReDrawSomeThings();
CalcualteSomeStuff();
Project.UpdateBoxStatus();
SaveProject(project);
ShowRedBoxPanel(redBoxVisibility);
RaiseStatusUpdated();
}
现在,很明显——大部分内容都是重复的——当我开始改变任何事情时,这很痛苦。特别是如果我最终得到二十种不同的盒子颜色,而不仅仅是两种!
我在想必须有一种方法可以去除更改的代码并以更通用的方法收集相同的东西 - 但我很难弄清楚如何做到这一点。
我听说过关闭 - 但我对它们的了解还不够,不知道它们是否会在这里提供帮助。
我在想可能以下内容可能在正确的行上-但我不知道如何告诉泛型方法要对哪个属性进行操作- [要更新的项目变量]
protected void SetRedBoxVisibility(bool redBoxVisibility)
{
SetGenericBoxVisibility([Project Variable To Update],redBoxVisibility)
ShowRedBoxPanel(redBoxVisibility);
RaiseStatusUpdated();
}
protected void SetBlueBoxVisibility(bool blueBoxVisibility)
{
SetGenericBoxVisibility([Project Variable To Update],blueBoxVisibility)
ShowBlueBoxPanel(blueBoxVisibility);
RaiseStatusUpdated();
}
protected void SetGenericBoxVisibility([Project Variable To Update], boxVisibility)
{
Project project = LoadProject();
project.**[Project Variable To Update]** = boxVisibility
ReDrawSomeThings();
CalcualteSomeStuff();
Project.UpdateBoxStatus();
SaveProject(project);
}
关于如何处理这种事情的任何指针都会很有用:)