当前位置: 代码迷 >> J2SE >> 问个java接口使用的有关问题~
  详细解决方案

问个java接口使用的有关问题~

热度:163   发布时间:2016-04-23 19:43:07.0
问个java接口使用的问题~~
我要写一个Player类, 有使用技能和移动的功能,用组合来写

package game.Player

import game.Skill
import game.Move

class Player {
Skill skill;
Move move;
}

大概是这样 ,那么,Skill 和 Move要做成接口吗?   这两个不会有多态。       
如果做成接口的话,如何实例化?
------解决思路----------------------
按照面向对象的习惯,应该这么设计:

class Skill{}
class Movement{}

class Player{
void active(Skill skill){}
void move(Movement movement){}
}

技能和移动本身都是静态对象,而发动技能和进行移动是玩家行为
------解决思路----------------------
那么,应该采用聚合关系:
class Skill{
public void active(){}
}
class Movement{
public void move(){}
}

class Player{
private Skill skill;
private Movement movement;
Player(Skill skill, Movement movement){}
void active(){
this.skill.active();
}
void move(){
this.movement.move();
}
}
------解决思路----------------------
接口不可以实例化,也就不可以带实例属性。如果想用接口约束对象行为,就在5楼基础上增加接口:

interface Activable {
public void active(Skill skill);
}

interface Moveable{
public void move(Movement movement);
}

class Player implements Activable, Moveable{
@Override
public void active(Skill skill){}
@Override
public void move(Movement movement){}
}
其实意义不大,而且这样一来又不是聚合关系了
  相关解决方案