所以我有3门课:
Item
GroupItem
延伸Item
ProductItem
扩展项目
我将一组Item
对象传递给一个类,并希望根据它们的类类型做不同的事情。
使用instanceof
是一种可接受的方法,或者我应该有一个内部boolean isGroup()
方法,该方法将在指定子类的初始化时设置。
class Item {
protected boolean isGroup = false;
public boolean isGroupItem() { return isGroup; }
}
class GroupItem extends Item {
public GroupItem() {
isGroup = true;
}
}
class ProductItem extends Item {
public ProductItem() {
isGroup = false;
}
}
class Promotion {
// Item can be either a group or a list of items
private List<Item> items = new LinkedList<Item>;
public void addItem(Item itemObj) {
items.addItem(itemObj);
}
public List<Item> getItems() {
return items;
}
}
class Checker {
// Items retrieved from Promotion and passed from another class as array
public Checker(Item[] items) {
// either
if(items[0] instanceof GroupItem) {
// Do something ...
}
// or
if(items[0].isGroupItem()) {
// Do something ...
}
}
}
所以我的问题是:
- 实例或方法?
- 如果方法,在项目或促销中?
- 而且,为什么?(只是这样我可以更好地理解推理)
提前致谢