Pasos
1. Cómo definir una clase simple para representar un objeto Donut
Comencemos por definir una clase simple que representará un objeto Donut con las propiedades name y productCode. Este ejemplo es una revisión del tutorial anterior sobre Cómo crear clases y objetos en Scala.
De manera similar al tutorial anterior, también vamos a tener una función print() que imprimirá el nombre y productCode para un objeto Donut dado. Si no estás familiarizado con la creación de funciones en Scala, puedes volver a consultar los tutoriales de funciones.
2. Cómo declarar un objeto compañero para la clase Donut
Un objeto compañero se define utilizando la palabra clave object y el nombre del objeto debe ser idéntico al de la clase.
Además, el objeto compañero debe definir un método apply() que se encargará de instanciar una instancia de la clase dada.
Dado que la clase Donut del paso 1 requiere las propiedades name y productCode, también estamos proporcionando parámetros de entrada similares al método apply() como se muestra a continuación.
3. Cómo crear instancias de la clase Donut usando el objeto compañero
Con el objeto compañero definido en el Paso 2 anterior, ahora puedes crear instancias de la clase Donut sin tener que usar la palabra clave new.
NOTA:
- Seguro que puedes argumentar que el objeto compañero no está realmente añadiendo ningún valor especial aparte de no tener que usar la palabra clave new.
- Sin embargo, en el próximo tutorial, te mostraré cómo el método apply() del objeto compañero puede ser utilizado como una fábrica para tu clase.
4. Cómo llamar a la función print para cada uno de los objetos donut
A continuación, vamos a llamar a la función print() desde nuestros objetos donut como se muestra a continuación.
println("\nStep 4: How to call function on each Donut object")glazedDonut.printvanillaDonut.print
Deberías ver la siguiente salida cuando ejecutes tu aplicación Scala en IntelliJ:
Step 4: How to call the print function for each of the Donut objectDonut name = Glazed Donut, productCode = 1111Donut name = Vanilla Donut, productCode = 2222