我正在制作一个展示陈列室的应用程序,在这一点上,我创造了太多的课程。
主视图是一个包含所有系列汽车的GridView。(每个GridView项打开一个新类,因此有9个类具有非常相似的代码)
我如何构建它?
答案 0 :(得分:2)
要在@ g00dy上添加一点肉体,首先要创建一个类
class BMW {
// Reference codes for every series
public final static int SERIES_1 = 0;
public final static int SERIES_2 = 1;
// etc
public final static int NUMBER_SERIES = 9;
// All the code needed for every car
// eg.
public String giveManufacturuer() {
return "BMW"; // But see @g00dy - use string resources
}
public String giveSeries() {
return XXXXX; // Depends on which approach you choose, see below
}
public String giveModelName() {
return XXXXX; // Depends on which approach you choose, see below
}
}
您可以将所有变体加载到此类中(为每辆汽车添加参考代码并设置一些表格以便轻松建立索引)。
或者您可以使用每个类的继承来扩展类:
class Series1 extends BMW {
@Override
public String giveSeries {
return "Series 1";
}
}
class Series1M3Door extends Series1 {
@Override
public String giveModelName {
return "3 Door";
}
}
然后,当您实例化最终类时,它将使所有三个函数正常工作。
这种方法很简洁,但仍会为你提供很多课程。我怀疑,对于你正在做的事情,一些经过深思熟虑的信息表(通过系列和模型代码访问)可能在隐藏类中更好地工作。
另一种可能更好的方法可能是使用您作为核心类返回的信息来构造代码。
答案 1 :(得分:1)
我实际上没有时间写下这一切,这意味着一个统一的课程,但这里有一些暗示。使用一个标志,它将指示汽车的型号(例如Z4,M6),然后在类中使用它来确定代码应运行的树。用字符串资源替换硬编码值(只需这样做,不需要其他备注)。在实例化类并使用它的函数时,请考虑该标志并将其置于if()
条件内或switch
内。如果某些模型需要的代码多于其他模型,则可以将其封装在负责模型的代码部分中。但是避免嵌套过多的ifs,因为它会变得混乱,就像定义了100个类,其中99%与其他类相同。始终尝试尽可能多地重复使用您的代码。它将减少写入(复制/粘贴)重复的东西,也减少应用程序的大小,它将需要的内存等。结论:尝试将类的公共部分组合成一个类(以RULE THEM ALL :-))和使用标志,让程序知道该做什么。