我已经编程了几年了。接口似乎一直是我难以理解的话题。将尽可能多的功能抽象到接口中是一种好习惯吗?
我从来没有完全理解他们的好处。我一直认为“为什么不正常编写方法”。它们只是方法。然后我开始学习依赖注入,以及它如何真正简化代码,让构造函数成为类与外界的主要联系点。
但是,最近,我再次开始思考接口以及如何将它们像类型一样扔掉,而不仅仅是一种标记方法的可爱方式。
所以在我第一次在 Java 中使用接口的真实实验中,我做了这个例子,我想知道的是:
对于了解接口强大功能的 Java 开发人员,我写的这段小代码说明了一个好的模式还是好的思路?到目前为止,基本上这是好的代码吗?我只想知道我是否走在正确的道路上。我明天有第二次面试,我想在面试中提出这一认识,如果且仅当我走在正确的道路上。
这是代码:
interface Fightable{
void kick(Fightable enemy);
void punch(Fightable enemy);
void takeDamage(Fightable enemy, String typeOfStrike);
void strikeEnemy(Fightable enemy, String typeOfStrike);
}
interface CanEat{
void chew();
void swallow();
}
interface MotherShip{
int motherShipBoost = 50;
String getColony();
void sendHelp(int[] location);
String buildMoreShips(int amount);
void flyToNewSystem(String newSystem);
int[] beamDownRandomly();
}
interface Animatable{
void animateChew(CanEat eater);
void animateSwallow(CanEat eater);
void animateMove(Moveable mover);
void animateRevive(CanEat eater);
void animateStrike(Fightable striker, Fightable receiver, String typeOfStrike);
}
interface Moveable{
void setNewLocation(int []newLocation);
int[] getLocation();
void move();
}
public class GameCharacter implements Fightable, CanEat, Moveable{
private int health;
private String name;
private int[] location;
private String stamina;
private String origin;
private String colony;
private Animatable animator;
private MotherShip motherShip;
private boolean isRecruited;
public GameCharacter(MotherShip motherShip, String name, Animatable animator){
this.motherShip = motherShip;
this.animator = animator;
this.name = name;
this.location=this.motherShip.beamDownRandomly();
this.colony = this.motherShip.getColony();
}
@Override
public void kick(Fightable enemy) {
strikeEnemy(enemy, "KICK");
}
@Override
public void punch(Fightable enemy) {
strikeEnemy(enemy, "PUNCH");
}
看起来我的想法是对的吗?
慕无忌1623718
沧海一幻觉
相关分类