Java FX - 如何将模型与viewmodel

时间:2017-06-21 20:01:10

标签: java javafx mvvm data-binding viewmodel

我正在尝试理解并使用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。

0 个答案:

没有答案