JavaFx: esiste una differenza tra String e StringProperty nelle classi del modello?

1

Sto cercando di seguire i concetti MVC quando sviluppo la mia applicazione, ma sono confuso tra l'utilizzo di String o StringProperty nelle classi Model.

Esempio 1:

public class User{

    String name;
    String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

Esempio due:

public class User{

    StringProperty name;
    StringProperty password ;

    public StringProperty getName() {
        return name;
    }

    public void setName(StringProperty name) {
        this.name = name;
    }

    public StringProperty getPassword() {
        return password;
    }

    public void setPassword(StringProperty password) {
        this.password = password;
    }

    public User(StringProperty name, StringProperty password) {
        this.name = name;
        this.password = password;
    }

Sto usando l'esempio 1, c'è differenza tra questi modelli o sono gli stessi?

    
posta Xlint Xms 11.03.2018 - 12:16
fonte

1 risposta

1

Una proprietà JavaFX è un contenitore osservabile che facilita associazione dati : la vista può essere connessa con le proprietà nel modello di vista, in modo che si aggiorni automaticamente quando il modello viene modificato.

Quindi, usa i campi delle proprietà se vuoi l'associazione dei dati, usa le stringhe ordinarie quando non hai bisogno di associazione dei dati.

In ogni caso, la proprietà dovrebbe essere associata a un oggetto modello specifico. Dovresti vedere una proprietà come un tipo speciale di variabile, non come un oggetto ordinario. Quindi passare una proprietà in un setter o in un costruttore è molto insolito. Invece, i tuoi getter, setter e costruttori di solito operano sui dati memorizzati all'interno di una proprietà. In questo modo, le classi basate sulla proprietà possono anche essere usate come Java Beans.

es. il codice che utilizza una proprietà potrebbe essere simile a questo:

public class User{
    private StringProperty nameProperty = new StringProperty();

    public final String getName() {
        return nameProperty.get();
    }

    public final void setName(String name) {
        nameProperty.set(name);
    }

    // expose the property for data binding
    // – possibly use a read-only interface
    public StringProperty nameProperty() {
        return nameProperty;
    }

    public User(String name) {
        nameProperty.set(name);
    }
}
    
risposta data 11.03.2018 - 12:26
fonte

Leggi altre domande sui tag