| ||||
Cita: Implementar multiples interfaces y heredar comportamiento multiple son cosas MUY distintas.Cuando implementamos interfaces, lo unico que hacemos es agregar codigo a firmas de metodos preestablecidas y ademas heredar constantes. La herencia multiple es mucho mas que eso: podemos heredar multiples comportamientos sin tener ninguna idea de COMO se lleva acabo ese comportamiento (lo caul al hacerlo con inerfaces, esto no es posible ya que hay que implementar los metodos). Otro punto es que al heredear en forma multiple, heredamos atributos, lo cual no es posible en la implementacion deinterfaces ya que los que heredamos son constantes. Por otro lado, el patron interfaz no tiene nada que ver con la herencia multiple. Este es usado para estructurar aplicaciones para que sean mas comprensibles.
__________________ http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux |
| |||
En cualquier sitio que traten el patrón interfaz te aclararán que también se usa para la herencia múltiple, en ningún momento he pretendido decir que sea igual, sino ha sido un malentendido por mi parte. Este es usado para estructurar aplicaciones para que sean mas comprensibles. El patrón interfaz se usa para muchas otras cosas, de hecho no creo que la que definición que has indicado sea correcta con respecto a la utilidad del patrón interfaz, me explico. La principal utilidad del patrón interfaz es definir un comportamiento independientemente de la clase que lo implemente. Ten en cuenta que lo importante de un objeto en OO, son los métodos que te permite ejecutar, como lo haga internatemente (es decir, que atributos maneje para realizarlo) no es lo esencial, de ahí que el patrón interfaz juegue un gran papel en herencia multiple. Como ejemplo, tienes la interfaz iterator o List. Yo puedo hacer un programa que utilice un List y lo recorra con un iterator: public void recorrer(List lista){ Iterator iterador = lista.iterator(); while (iterador.hasNext()){ Object contenido = iterador.next(); System.out.println(contenido.toString()); } } Y puedo usar indistintamente este programa con cualquier objeto que implemente la clase List ( AbstractList, LinkedList, Vector, ArrayList...), como lo haga internamente cada una de esas clases no importa, me importa su comportamiento y los métodos que implementan de la interfaz List. Para hacer más comprensibles las aplicaciones están las buenas arquitecturas de varias capas y patrones de diseño, que además facilitan su desarrollo. Última edición por Raiko; 10/08/2006 a las 05:10 |