He tratado de realizar variaciones sobre la posibilidad que se apunta en "sourcemaking.com":
[motivation] "Passing in the required object causes a dependency between the required object and the called object. If this going to mess up your dependency structure, don't use Preserve Whole Object".
Como excepción a la aplicación de preserve whole object<-making methods caller sympler.
para ello he usado un código inventado por mi a bote pronto, sobre la gestión de una película y la contabilidad de sus gastos quedando el código de la forma siguiente:
se puede descargar el archivo de moonEdit para ver como he llegado a ese código y consideraciones preserver whole object exception
class peliculaDeMiedo{main Camara camara = new Camara(4);integer Plano = 6;integer escena = 8;integer litrosSangre= 44;String [] actores = [hulbrainer -> datosHulbrainer, kevincosnerjose ->datosKevincosnerjose, avaganer->datosAvaganer];Vampiro dragucula = new Vampiro(camara,plano,escena,actores[hulbrainer]);......ElementosPelicula elementosUsados = new ElementosPeliculaMiedo(camara,plano,escena,litrosSangre);Double pagaDia = new ContableMiedo().dameLaPagaStaff(elementosUsados);}
class ElementosPeliculaclass ElementosPeliculaAmor extends ElementosPeliculaclass ElementosPeliculaMiedo extends ElementosPelicula
class Camara{ Camara(integer camara) { un monton de peticiones a otros metodos, consultas a servicios y logaritmos nepericonianos; this.ordenDeLaCamara=camara; } Double calculaCosteAnual() { un monton de calculos y de historias que miran el precio de la camara , depreciacion , duracion de la lampara y lo que te de la gana }}
class VampiroVampiro (Camara CamaraEnfocada, integer PlanoPelicula, integer escena,Actor actor){ sus cosas}
class Contable{ Contable(){ se hacer cositas con los números}public Double damePagaStaff (elementosPelicula elementos){ Double consteCamara = elementos.camara.calcilaCosteAnual()/365; double gastoExtraPelicula = calculaGastoProducto(elementos); etc etc.... return unapasta;}private abstract double calculaGastoProducto(ElementosPelicula elementos); }
class ContableMiedo extends ContablecalculaGastoProducto(elementos){ return elementos.litrosSangre*getPrecioMercadoEuros();}
class ContableAmor extends ContablecalculaGastoProducto(elementos){ return elementos.kilosCebolla*getPrecioMercadoEuros();}
class peliculaDeAmor{main Camara camara = new Camara(4);integer Plano = 6;integer escena = 8;integer kilosCebolla= 4;String [] actores = [hulbrainer -> datosHulbrainer, kevincosnerjose ->datosKevincosnerjose, avaganer->datosAvaganer];......ElementosPelicula elementosUsados = new ElementosPeliculaAmor(camara,plano,escena,kilosCebolla)Double pagaDia = new ContableAmor().dameLaPagaStaff(elementosUsados);}
No hay comentarios:
Publicar un comentario