michaelpaliz 8ded59ebde | 2 years ago | |
---|---|---|
.idea | 2 years ago | |
.settings | 2 years ago | |
src/main | 2 years ago | |
target/classes | 2 years ago | |
.classpath | 2 years ago | |
.project | 2 years ago | |
README.md | 2 years ago | |
diagrama.png | 2 years ago | |
pom.xml | 2 years ago | |
primerEjemplo.iml | 2 years ago |
En esta mini tienda de libros he implementado 7 basicas funciones para la tienda, no lo he echo por comandos por motivos de tiempo y simplicidad de la aplicacion.
Procedimiento
* Los datos los he buscado por internet, es un fichero json (libros.json) lo he parseado empeze a controlar algunos campos para evitar muchas exepciones inecesarias porque algunos objetos del json no existian para todos los libros.
* Creo 2 interfaces donde basicamente creo los metodos generales, despues en la otra interfaz introduzco los mas especificos para cada libro.
* Existen 2 clases mas que implementan las interfaces, que es donde implementaremos la primera capa de abstraccion en nuestras funciones.
* Por ultimo la clase servicio que es donde realizaremos la parte mas grande de la logica que es la busquecada mas la comparacion segun lo que necesitemos hacer por cada metodo.
Creo una clase Tienda donde creo el menu e introduzco varias funciones para el usuario.
Digrama de la app
El proyecto necesita algunas mejoras, como por ejemplo la simplicidad del codigo y sobretodo la restrocturacion ya que me gustaria indigar mas en las clases y limpiar mas el codigo.
La clase Predicate ha sido muy util la verdad es que no sabia que era hasta que empece a utilizarlo.
Lamdbas es muy importante tanto como el predicate en este ejercicio te ayuda a simplificar mucho el codigo en varias lineas.
Tiene el mismo efecto que la configuracion via XML
Busca un bean y lo inyecta en la depencia
Se realiza un autocableado byType
Lo podemos utilizar en un metodo setter
@Autowired
public void setPeliculas(PeliculasServicio peliculasServicio){....}
Definicion en la propiedad
@Autowired
private PeliculaServicio peliculaServicio;
En el constructor
@Autowired
public PeliculaServicio(PeliculaServicio){....}
Ejemplo en el xml
<bean id="peliculaDaoMemory"
class="com.primerEjemplo.PeliculaImplements"
init-method="cargarDatos" />
<bean id="peliculaService" class="com.primerEjemplo.Modelo.PeliculaServicio" autowire="byType"/>
Ejemplo del main
// Necesitamos el bean de servicios para printar por pantalla la logica
PeliculaServicio peliculaService = appContext.getBean(PeliculaServicio.class);
peliculaService.peliculasPorGenero("Drama").forEach(System.out::println);
appContext.close();