Java 扩展模型的良好实践?
我在列表视图中使用以下模型:Java 扩展模型的良好实践?,java,android,performance,model,extend,Java,Android,Performance,Model,Extend,我在列表视图中使用以下模型: public class ListItem { private int _Id; private String Name; public ListItem() { this._Id = 0; this.Name = ""; } public ListItem(int Id, String Name) { this._Id = Id; this.Name =
public class ListItem {
private int _Id;
private String Name;
public ListItem() {
this._Id = 0;
this.Name = "";
}
public ListItem(int Id, String Name) {
this._Id = Id;
this.Name = Name;
}
public int getId() {
return this._Id;
}
public void setId(int c) {
this._Id = c;
}
public String getName() {
return this.Name;
}
public void setName(String c) {
this.Name = c;
}
}
我有一些额外的数据将显示一旦他们点击项目,他们想查看。由于我从数据库中提取这些信息,并且我没有限制他们放入数据库中的项目数量,我想知道是否可以在另一个模型中扩展我的模型。类似于(如果这是编写扩展模型的错误方法,如果扩展模型不是什么大事,您可以纠正我):
这是个坏主意吗?如果我只使用不同的模型或一个模型,然后从列表中返回所需的数据,然后再获取其余的数据,会更好吗?我试图用它编写干净的代码,并且尽可能少地重复代码。我也希望我的代码高效且性能良好,但我不确定这是否是个好主意 看起来您没有使用所扩展的类中的大部分代码(变量和方法)。如果在创建ItemDetails对象时不需要显式获取ListItem对象(如
ListItem item=new ItemDetails();
),那么实际上没有理由扩展该类。在这种情况下,如果您不进行扩展,那么您的代码肯定更干净。如果您想编写干净的代码,您应该了解构造函数调用ListItem构造函数,并且已经初始化了字段“\u Id”和“Name”,不建议在不需要更改它们的情况下重写方法。您的代码编译了吗。我看到多个问题。为什么ListItem类构造函数是SpinnerItem()?在ItemDetails类弹药中相同?还有,为什么您需要这个列表?你可以直接访问这个。设置Id(0)你让我回答了前两个问题。我承认,我把这些放在一起是为了这个问题,我还没有在我的代码中真正实现它。现在应该更新它们。关于第三个问题,我只使用记事本,所以我想我应该花更多的时间写出来。问题是在实践中使用类似的东西。代码就在那里,这样你就能明白我要用这个。。。我的错,一个改正。您可以直接从ItemDetails中访问它。_Id=0,方法是将_Id声明为受保护。好的,我错过了受保护的部分,但修复了其余部分。如果我声明它受保护,我会很好,你认为这会起作用吗?还可以删除ItemDetailsO中_Id和Name的get/set方法,如果我在db表中有10个项目,如果我只想在listview中显示其中的3个或4个,但想在details活动/片段中显示所有项目,这将是一个好主意,但除此之外,它不是吗?在大多数情况下,我的想法是使用我扩展的表中的所有变量。我的意思是一般。现在,您已经更改了代码,这更有意义。如果您从ItemDetails中删除重写方法,这些方法与扩展类中的方法(如getName())的操作相同,那么在此处使用extend是有意义的。如果a是b的特化(b是a的推广),则通常从b类扩展a类。这与oop有关。例如,如果你有一个类“human”和一个类“student”,那么让student扩展human在语义上是有意义的。谢谢你的回答,但正如我之前所说,代码本身就是为了帮助人们理解我的问题。
public class ItemDetails extends ListItem {
private String itemType, Manufacturer, Qty, Notes;
public ItemDetails () {
this._Id = 0;
this.Name = "";
this.itemType = "";
this.Manufacturer = "";
this.Qty = "";
this.Notes = "";
}
public Ammo(int _Id, String name, String itemType,
String manufacturer, String qty, String notes) {
this._Id = _Id;
this.Name = name;
this.itemType = itemType;
this.Manufacturer = manufacturer;
this.Qty = qty;
this.Notes = notes;
}
// Get Variables //
public int get_Id() {
return this._Id;
}
public String getName() {
return this.Name;
}
public String getItemType() {
return itemType;
}
public String getManufacturer() {
return Manufacturer;
}
public String getQty() {
return Qty;
}
public String getNotes() {
return Notes;
}
// Set Variables //
public void set_Id(int c) {
this._Id(c);
}
public void setName(int c) {
this.Name = c;
}
public void setItemType(String c) {
itemType = c;
}
public void setManufacturer(String c) {
Manufacturer = c;
}
public void setQty(String c) {
Qty = c;
}
public void setNotes(String c) {
Notes = c;
}
}