我有以下所有其他活动扩展的类。下面是一些伪代码:应用设计模式以减少代码重复
public class CommonActivity extends Activity
{
//class member variables
protected void setupInterface(String activityName)
{
//a bunch of setup code here
Button select = new Button;
Button create = new Button;
Button delete = new Button;
}
protected void resetScreen()
{
selectButton.highlight();
createButton.unhighlight();
deleteButton.unhighlight();
}
}
我有五种六个扩展CommonActivity,并像做其他类如下:
public class SectionActivity extends CommonActivity
{
//class member variables
protected void onCreate()
{
setupInterface("sectionActivity");
}
}
现在我已经从CommonActivity扩展另一个活动,这只是一个与其他活动略有不同。我发现自己写如下代码:
public class ExActivity extends CommonActivity
{
//class member variables
protected void onCreate()
{
setupInterface2("sectionActivity");
}
}
,然后添加下面的方法来CommonActivity(除了什么已经在那里了):
protected void setupInterface2(string activityName)
{
//a bunch of setup code here
Button select = new Button;
}
protected void resetScreen2()
{
selectButton.highlight();
}
现在我发现自己想知道的最好的方式来消除代码重复。代码中说“一堆设置代码”的注释在活动中永远不会改变。我应该在这里使用某种设计模式吗?我玩弄了模板模式的想法,但是然后使用相同的setupInterface代码的五个类中的每一个将在它们各自的类中具有该重复的代码,而ExActivity将具有其自己的实现(希望该句子甚至有意义)。我还考虑过使用策略模式将独特的代码封装在setupInterface中的类中。这对我来说似乎很合理,但我觉得可能会有更优雅的东西。我甚至在这一点上想,我应该从CommonActivity中删除setupInterface2和resetScreen2,并简单地覆盖ExActivity中的这些方法。这似乎是最简单的解决方案。这里的任何建议都会很棒!
不错的答案!!!! –
真的很好的建议 –
很好的答案。我想你可以把它看作是一个内部工厂方法,用于设置/重置处理程序,而工厂方法是一个模板方法,可以被需要不同处理的奇怪类重写。 –