JavaFX-如何将模型与viewmodel分离
我正试图理解并将JAVAFX用于一个学校项目 我读过的几乎所有教程都说,我们使用的是MVVM(模型视图模型)。但它们只是使用一个视图和一个视图模型(请参见,此处没有模型) 我想将模型与视图模型(因此与视图)分离。我不想在模型类中引用gui包。所以这里没有JavaFx属性 所以,我试过: 比方说,我有一个名为Person的类JavaFX-如何将模型与viewmodel分离,java,javafx,mvvm,data-binding,viewmodel,Java,Javafx,Mvvm,Data Binding,Viewmodel,我正试图理解并将JAVAFX用于一个学校项目 我读过的几乎所有教程都说,我们使用的是MVVM(模型视图模型)。但它们只是使用一个视图和一个视图模型(请参见,此处没有模型) 我想将模型与视图模型(因此与视图)分离。我不想在模型类中引用gui包。所以这里没有JavaFx属性 所以,我试过: 比方说,我有一个名为Person的类 public class Person { private String name; private String street;
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);
}
}
这种方式意味着有太多的代码和太多可能忘记某些东西的方式(当您添加或删除模型的成员时)。双向绑定也是一大难题
有人知道更好的方法吗
我希望我的模型类是“无gui”的,因为有一天它们必须转移到服务器项目中。如果没有办法将模型与viewmodel分开,那也没关系,但是我们应该停止在Java中称它为MVVM。我不清楚使用JavaFX属性是否违反了“无GUI”的类。JavaFX属性类本质上与GUI无关,除了它们是在一个以
javax.
开头的包中定义的。包的名称不会使类成为UI类。但是,考虑在模型中使用绑定JavaBean属性,然后使用JavaBeAnPrimyType适配器类,例如@ @ JAMESYD,我认为它是GUI相关的,因为如果有一天我决定返回Swing(或另一个框架),我希望我的模型(GUI无关类)可以像以前那样工作,因为它们只是数据容器。但是谢谢你的有趣链接,它肯定会帮助我实现我想要的!没有任何东西可以阻止您在Swing应用程序中使用JavaFX属性。属性和绑定API可以很容易地分解成一个单独的库——它们根本不依赖JavaFX工具包。(例如,JavaFX并发API的情况并非如此。)