JavaFX: créer des propriétés plus efficacement

Les fonctionnalités avancées de propriétés JavaFX ne sont pas sans un coût. Plus précisément, l'instanciation d'un objet de propriété prend plus de mémoire et le temps de traitement que de créer une propriété en fonction du champ-simple. Et dans de nombreuses classes, les fonctionnalités avancées d'un objet de propriété JavaFX ne sont que rarement nécessaires. Ce, l'instanciation des objets de propriété pour chaque propriété dans une classe si l'objet est nécessaire ou non, est un gaspillage.

Voici une technique pour créer des propriétés dans lesquelles la propriété objets eux-mêmes ne sont pas instanciés jusqu'à l'accesseur de propriété lui-même est appelé. De cette façon, l'objet de la propriété est pas créé sauf si cela est réellement nécessaire. Voici les détails de cette technique:

  1. Déclarer un champ privé pour stocker les données représentées par l'établissement.

    Par exemple, pour une propriété de chaîne, vous créez un Chaîne variable. Pour le nom de la variable, utilisez le nom de la propriété préfixé par un tiret, comme ceci:

    finale privée cordes _firstName = "" -
  2. Créer, mais ne pas instancier, une variable privée pour représenter l'objet de la propriété.




    En d'autres termes, déclarer la variable mais ne pas appeler le constructeur de la classe:

    finale privée SimpleStringProperty firstName-
  3. Créer le getter.

    Dans le getter, utiliser un si déclaration à déterminer si l'objet de propriété existe. Si elle le fait, retourner la valeur de la propriété. Si elle ne le fait pas, retourner la valeur du champ privé. Par example:

    public final Chaîne getFirstName () {if (firstName == null) return _firstName-elsereturn firstName.get () -}
  4. Créer le setter.

    Utilisez la même technique dans le setter:

    finale setFirstName public void (String value) {if (firstName == null) _firstName = valeur-elsefirstName.set (valeur) -}
  5. Créer l'accesseur de propriété.

    Dans cette méthode, vérifiez d'abord si l'objet de la propriété existe et créer l'objet si elle existe pas. Utilisez la valeur du champ privé comme la valeur initiale de la propriété. Ensuite, retourner l'objet:

public final StringProperty firstNameProperty () {if (firstName == null) prenom = new SimpleStringProperty (this, "prenom", _firstName) -Retour firstName-}

Voici à quoi il ressemble mis ensemble dans une classe nommée Client:

Public class Customer {de _firstName final privé String = "" -salle de finale SimpleStringProperty firstName-public final Chaîne getFirstName () {if (firstName == null) return _firstName-elsereturn firstName.get () -} setFirstName vide public final (String valeur) {if (firstName == null) _firstName = valeur-elsefirstName.set (valeur) -} public final StringProperty firstNameProperty () {if (firstName == null) prenom = new SimpleStringProperty (this, "prenom", _firstName) -Retour firstName -}}

» » » » JavaFX: créer des propriétés plus efficacement