Creación de propiedades de manera más eficiente en JavaFX
Crear instancias de un objeto de propiedad en JavaFX toma más memoria y tiempo de procesamiento que la creación de una simple propiedad sobre el terreno. En muchas clases, están sólo ocasionalmente necesitan las capacidades avanzadas de un objeto de propiedad JavaFX.
Hay una técnica para la creación de propiedades en que los bienes objetos en sí no se crean instancias hasta que la misma propiedad de acceso se llama. De esa manera, no se crea el objeto de propiedad a menos que sea realmente necesario. Aquí están los detalles de esta técnica:
Declarar un campo privado para contener los datos representados directamente en el hotel.
Por ejemplo, para una propiedad de cadena, se crea un Cuerda variable. Para el nombre de la variable, utilice el nombre de la propiedad prefijado por un guión, así:
final privado SimpleStringProperty firstName-
Crear, pero no crear una instancia, una variable privada para representar el objeto propiedad.
En otras palabras, declarar la variable, pero no llame al constructor de la clase:
final privado SimpleStringProperty firstName-
Cree el captador.
En el captador, utilice un si declaración para determinar si el objeto existe propiedad. Si es así, devolver el valor de la propiedad. Si no es así, devolver el valor del campo privado. Por ejemplo:
pública final Cadena getFirstName () {if (firstName == null) return _firstName-elsereturn firstName.get () -}
Crear la incubadora.
Utilice la misma técnica en la incubadora:
vacío final pública setFirstName (valor de cadena) {if (firstName == null) _firstName = valor elsefirstName.set (valor) -}
Cree la propiedad de acceso.
En este método, primero compruebe si el objeto existe la propiedad y crear el objeto si no existe. Utilice el valor del campo privado como el valor inicial de la propiedad. A continuación, devolver el objeto:
pública final StringProperty firstNameProperty () {if (firstName == null) firstName = new SimpleStringProperty (esto "firstName", _firstName) -Retorno firstName-}
Aquí está lo que parece poner juntos en una clase llamada Cliente:
Clase pública Cliente {_firstName final privado String = "" -cuarto última SimpleStringProperty firstName-pública final Cadena getFirstName () {if (firstName == null) volver _firstName-elsereturn firstName.get () -} public final void setFirstName (valor de cadena) {if (firstName == null) _firstName = valor elsefirstName.set (valor) -} pública final StringProperty firstNameProperty () {if (firstName == null) firstName = new SimpleStringProperty (esto "firstName", _firstName) -Retorno firstName -}}