----------------------------------------------------------

Pedro del Gallego's Weblog

« El trigre : Cosas... | Main | Terminologia : Tipos... »

20040926 domingo septiembre 26, 2004

Antipatron : Concrete Class Dependency

O el "Antipatrón" mas sencillo del mundo.

Estaba yo revisando un código antiguo, es decir refactorizando modernamente ;), cuando vi la peculiar forma que tenia de hacer las cosas y es que, como todos, mi forma de tirar código va variando segun los conocimientos (y modas) pero sobre todo segun los trompazos que me vaya dadon contra mis propios ladrillos de código, una de las cosas que mas rápido se aprende en la POO, es que cuanto menos dependas de algo mejor (otra cosa, es que lo pongamos en práctica pronto)

Pues bueno a lo que voy, para desacoplar una clase que depende de otra debemos seguir la maxima Interface Implementation Separation (apartir de ahora IIS, ummm mejor no ;). Veamos esto en código.

Antipatron : Concrete Class Dependency


public class A { private final B b;
public A(B b) { this.b = b; }
}
public class B { }

Como vemos A depende de una instancia concreta de B, con lo facil que seria esto:

Solución

public interface B { }

public class BImpl implements B { }

Con Esto reduciremos el grado de acoplamiento que existen entre la clase A con respecto de la B. Espero que esto le sirva a alguien para que no tenga que esconder código debajo de la manta como yo :P .

PS I: Ejemp tomado de la página de picocontainer.
( sep 26 2004, 06:04:00 PM CEST ) Permalink Comentarios [2]

URL de la referencia: http://weblogs.javahispano.org/akuma/entry/antipatron_concrete_class_dependency
Comentarios:

Ahora sólo te falta meter una factoría por medio para que la cosa vaya niquelada, o bien algún framework de IoC (picocontainer como bien dices... )

Saludos.

Enviado por bumba en septiembre 27, 2004 a las 03:29 PM CEST #

Tu solucion creo que no corresponde. Cuando tienes un elemento del dominio que está relacionado con otro A con B, A siempre tendrá acoplamiento con B. Pero si lo que pretendías era aumentar las funcionalidades de B, ya te va bien el segundo codigo.

Enviado por raquel en junio 19, 2006 a las 11:35 PM CEST #

Enviar un comentario:

Nombre:
Correo electrónico:
URL:

Su comentario:

Sintaxis HTML: Deshabilitado