我正在制作游戏,我有一个包含Item的Tile类。
public clas Tile{
Item item;
....
public void setItem(Item item){
this.item = item;
}
}
当我引用Tile时,我想在项目上调用interact()
方法。如何在不检查对象是否为null
的情况下执行此操作。我不认为Null
对象模式在这种情况下会起作用,因为会有混合实例内聚 - 表示空项的项的子类将有一个空的interact()
方法。
答案 0 :(得分:1)
当您尝试使用null时,您正试图找到一种不检查对象是否为空的方法。
在这种情况下,设计一下在执行item != null
之前检查item.interact()
是否不是反模式或黑客解决方案。
答案 1 :(得分:0)
混合实例内聚问题的定型解决方案是创建子类(并确保超类不公开子类特定的功能)。
因此,您要创建ItemTile
的{{1}}和NonItemTile
子类。
Tile