Java 应用设计模式减少代码重复
我有一节课,所有其他活动都是从这节课开始的。下面是一些伪代码:Java 应用设计模式减少代码重复,java,android,design-patterns,Java,Android,Design Patterns,我有一节课,所有其他活动都是从这节课开始的。下面是一些伪代码: public class CommonActivity extends Activity { //class member variables protected void setupInterface(String activityName) { //a bunch of setup code here Button select = new Button;
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(除了已经存在的方法之外):
现在我想知道消除代码重复的最佳方法。代码中表示“一堆设置代码”的注释在活动之间永远不会更改。我应该在这里使用某种设计模式吗?我曾玩弄过模板模式的想法,但在setupInterface中使用相同代码的五个类中,每个类在各自的类中都会有重复的代码,而ExActivity会有自己的实现(希望这句话有意义)。我还考虑使用Strategy模式将setupInterface中唯一的代码封装到它们自己的类中。这对我来说似乎很合理,但我觉得可能会有更优雅的东西。在这一点上,我甚至认为我应该从CommonActivity中删除setupInterface2和resetScreen2,并简单地以精确性覆盖这些方法。这似乎是最简单的解决办法。这里的任何建议都会很好 与其从设计模式的角度考虑问题,我建议您清楚地描述类,这样您就可以实现它们之间自然存在的模式。如果有6个类从一个类扩展而来,其中5个具有类似的行为,而另一个没有,那么类的继承模型可能不正确。也许有必要组成5个类,它们与实现公共逻辑的类相似,而害群之马可以自己实现其特殊逻辑
这只是一个想法,但我首先会用一句简单的话清楚地描述每个类,然后实现任何可能自然产生的模式,而不是尝试将它们放入一个或另一个预定义的模式中 回答得好。我想您可以将其视为安装/重置处理程序的内部工厂方法,工厂方法是一个模板方法,可以被需要不同处理的奇数类覆盖。在您决定之后,请务必分享您的设计,以使我们受益。谢谢
protected void setupInterface2(string activityName)
{
//a bunch of setup code here
Button select = new Button;
}
protected void resetScreen2()
{
selectButton.highlight();
}