我正在尝试理解并使用JAVAFX进行学校项目。
我读过的几乎所有教程都说过,我们正在使用MVVM(Model-View-ViewModel)。但他们只是使用View和ViewModel(请参阅此处没有模型)。
我想将Model与ViewModel分开(因此从View中分离)。我不想在我的模型类中引用gui包。所以这里没有JavaFx属性。
所以,我试过了: 比方说,我有一个名为Person的课程。
public class Person {
private String name;
private String street;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
一个名为PersonViewModel的ViewModel
public class PersonViewModel {
private Person underlyingObject = new Person();
private SimpleStringProperty name;
private SimpleStringProperty street;
public String getName() {
return underlyingObject.getName();
}
public SimpleStringProperty nameProperty() {
return name;
}
public void setName(String name) {
this.underlyingObject.setName(name);
this.name.set(name);
}
public String getStreet() {
return underlyingObject.getStreet();
}
public SimpleStringProperty streetProperty() {
return street;
}
public void setStreet(String street) {
this.underlyingObject.setStreet(street);
this.street.set(street);
}
}
这种方式意味着很多代码和许多可能的方法来忘记某些东西(当你添加或删除模型的成员时)。而BiDirectional Bindings也是一个很大的痛苦。
有没有人知道更好的方法?
我希望我的Model类是“无gui”的,因为他们有一天必须进入服务器项目。如果没有办法将模型与viewmodel分开,那也没关系,但是我们应该停止在Java中调用MVVM。