我正在开发一个小型的JAVA游戏,并且在OOP概念中存在关于内聚和耦合的问题。
我有一个名为Locations的类,如下所示
public class Location {
private int positionX;
private int positionY;
public Location(int positionX, int positionY){
this.positionX=positionX;
this.positionY=positionY;
}
public void updateLocation(int positionX, int positionY){
this.positionX=positionX;
this.positionY=positionY;
}
public String getLocation(){
return (positionX+","+positionY);
}
public int getLocationX(){
return this.positionX;
}
public int getLocationY(){
return positionY;
}
public void setLocationX(int positionX){
this.positionX=positionX;
}
public void setLocationY(int positionY){
this.positionY=positionY;
}
}
我有一个名为locatable的接口,如下
public interface Locatable {
public Location getPosition();
public void setPosition(Location position);
}
还有一个实现上述接口的抽象类,如下
public abstract class GameObject implements Locatable{
protected String name;
protected Location position;
public GameObject(String name, Location position){
this.name=name;
this.position=position;
}
//------------- getter & setters for positions----------
@Override
public Location getPosition(){
return position;
}
@Override
public void setPosition(Location position){
this.position=position;
}
//------------------------------------------------------
//------------------------------------------------------
//------------- getter & setters for name ---------------
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
//------------------------------------------------------
//------------------------------------------------------
}
以及扩展上述类的类
public class Lotus extends GameObject{
private int no_of_Petals=100;
public Lotus(String name,Location position){
super(name,position);
}
//-----getters & setters for no of petals --------
public void setNoOfPetals(int no_of_Petals){
this.no_of_Petals=no_of_Petals;
}
public int getNoOfPetals(){
return no_of_Petals;
}
//------------------------------------------------
//------------------------------------------------
}
因此,我对在我的代码中使用Location类是否不是一种好的编码习惯感到困惑,就像它紧密耦合吗?还是可以吗?请让我澄清一下这个问题,因为我仍在学习有关OOP的知识。如果您要对此问题投反对票,请在执行此操作之前提供关于我错在哪里的评论。
最佳答案
是。位置与代码紧密耦合。但是,我相信如果需要的话,紧密耦合不会有太大变化的泛型类仍然可以。
仍然,如果您想要松散耦合,则可以创建Location类实现的接口,并在代码中的所有位置使用该接口,而不用使用类名。
然后,您可以创建实现的对象,并将其传递给接口名称为形式参数的方法
关于java - 可以使用类A的实例作为类B的属性吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52915255/