我有一个显示游戏所有关卡的视图。这些关卡由活动读取,然后传递到视图中。虽然我可以从视图中读取它们,但这不是它的职责,而我喜欢分离关注点。
目前,我正在调用一个setter来实现:
((GameView) findViewById(R.id.game)).setLevels(loadLevels());
然而,如果我忘记调用setter函数,这个视图将无法正常工作,这一点让我不太满意。是否有更好的方法来传递等级?
我有一个显示游戏所有关卡的视图。这些关卡由活动读取,然后传递到视图中。虽然我可以从视图中读取它们,但这不是它的职责,而我喜欢分离关注点。
目前,我正在调用一个setter来实现:
((GameView) findViewById(R.id.game)).setLevels(loadLevels());
然而,如果我忘记调用setter函数,这个视图将无法正常工作,这一点让我不太满意。是否有更好的方法来传递等级?
public class MyView {
public MyView(ILevelLoader levelLoader){
this.levelLoader = levelLoader;
}
...
}
setNumColumns
来设置它(这将相当于您的loadLevels()?)
- 您可以忽略它,它会恢复默认值。
- 您可以将其设置为属性,如:app:numColumns="3"
您可以尝试使用属性或类中的默认值来完成此操作。getLevels()
。这样,当您实例化该类时,如果在代码中忘记传递级别,则无法编译。是否更好,我想这是个人口味问题 :)