小弟最近自学java,遇到小问题求大神指点
有一游戏类game,类中has a 一个目标实例对象target,target中有一个实例对象int数组代表位置。 游戏流程为,用户输入一个数组,判断是否击中目标。
问题来了,我在game中写了一个方法isFire,参数为用户输入的值,但是在实现时,我想到了两种解决办法。虽然都可以正常运行使用,但我总觉得是有区别的,但自己又说不清楚。望众大神指点一下,小弟不胜感激。
小弟的方法一:使用target中的get方法,取得target中的数组,然后与传入的数字比较,最后返回结果。
小弟的方法二:将具体的逻辑实现推给target,在target中实现一个比较方法,参数为int,逻辑为将int与 target的数组比较,然后返回结果。game中的方法isFire直接调用target中的比较方法。
哪个方法好点,区别在哪里啊?求大神指点。一个同学告诉我第二种才是面向对象是不是真的啊?
[解决办法]
我的想法。
面向对象,首先要弄清楚有什么对象,对象有什么属性,有行为
首先游戏game,对象有什么属性,什么方法。
根据你的描述,geme有一个目标target,当然肯定有个play方法。
目标有一个数组属性。从你描述,目标应该只有提供数组的方法。
还有输入。目标应该没有输入功能,游戏也没。
只有player才有,玩家才有。
那么应该有个玩家对象。玩家有个输入方法。还要有个game对象,玩什么游戏。
你要的判断是否击中目标,这个应该由game对象来完成。这个流程就是游戏的核心。
也game才有资格。也就是play方法。但是他需要玩家传入一个输入值。
现在清楚了。
Target int[] arr;
public int[] getArr();
Game Target target;
private isFire();
public void play(input){isFire(target.getArr, input)//做判断}
Player Game game;
private int input();
game.play(input);
[解决办法]