所以假设我有2个课程,House
和Dog
我希望Dog
了解它所居住的House
,反之亦然。
我目前有两个类设置:
public class House {
private String address;
private Dog dog;
public House(String address, Dog dog) {
setAddress(address);
setDog(dog);
dog.setHouse(this);
}
public void setDog(Dog dog) {
this.dog = dog;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getDog() {
return dog.getName();
}
}
public class Dog {
private House house;
private String name;
public Dog(String name) {
setName(name);
}
public void setHouse(House house) {
this.house = house;
}
public String getHouse() {
return house.getAddress();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
最后,我有这个主要课程将两者结合在一起:
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Alex");
House house = new House("123 Main street", dog);
System.out.println(dog.getName() + " resides in " + dog.getHouse());
System.out.println(house.getAddress() + " has a dog named " + house.getDog());
}
}
Alex resides in 123 Main street
123 Main street has a dog named Alex
我基本上想知道是否有更好的方法让这两个类在彼此之间交换数据/信息。我觉得我现在拥有的东西可能非常凌乱/邋and,可能不是很好的设计实践。对任何反馈/建议持开放态度。
由于
答案 0 :(得分:0)
我认为您正在寻找的是this: Managing Bidirectional Associations in my Java Model问题,因为它发生了与其他有用的堆栈溢出答案的链接。
答案 1 :(得分:0)
在我看来,现在,你没有任何“草率”,你只有2个具有各自属性的课程以及他们各自的吸气剂和制定者。
我给你的唯一建议是在构造函数中。我想你可以这样说,只是遵循标准:
- 我认为你应该在两个类中都有一个空的构造函数;这使您有机会创建类的实例而不发送参数。
- 在这种情况下,如果您想要实例化House,但不知道地址,那么这将有所帮助,因为您将在以后生成它。因此,您使用空构造函数创建House,然后使用setAddress()设置地址。
行:
public House(String address, Dog dog) {
this.address=address;
this.dog=dog;
dog.setHouse(this);
}
public House() { //this is to be able to create an instance without sending any parameter.
address="";
dog=new Dog();
}
犬:
public Dog(String name) {
this.name;
house= new House();
}
public Dog() {
this.name="";
house=new House();
}
希望这会有所帮助。
问候,