我正在开发一个小型的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/

10-11 22:28
查看更多