La composición para el rescate de la herencia

Hoy, vamos a hablar de la arquitectura de software

El concepto de herencia es un concepto que uno debe dominar cuando uno utiliza un lenguaje objetoSi quieres organizar tu código de alrededor de los objetos, hay una fuerte posibilidad de que usted se enfrenta con la necesidad de utilizar la herencia. Aunque el legado trae un montón de ventajas innegables, esta no es la respuesta para todos los problemas. Si usted se cae en el uso indiscriminado de la herencia, hay una alta probabilidad de que usted mordiez dedos un par de meses más tarde, cuando usted necesita para evolucionar el ámbito funcional de la aplicación. Por supuesto, es la tentación de decir,"Si yo hereda de Foo, entonces voy a tener todas sus funciones sin ningún esfuerzo.". Pero, al mismo tiempo, se le unen fuertemente a ambos de sus clases y si vienen a divergir en el futuro, usted no será capaz de que usted acaba de decir"Ok, comparten la misma cuando algunas de las características". A continuación, voy a empezar a darnos cuenta de que es difícil para poner a prueba cada una de estas clases, y que está lejos de ser obvio para la división. Empiezan los problemas. La preocupación por los desarrolladores no experimentado es que uno no se da cuenta de este hecho de que en el medio de un proyecto o cuando el cliente quiere hacer un cambio en el funcionamiento de un elemento existente. Se puede creer en mí por la palabra, que siempre termina por llegar.

Es necesario ser capaz de detectar los diferentes tipos de relaciones que pueden existir entre las clases.

Una clase puede estar vinculados entre sí por tres tipos de relaciones: La composición siempre será más flexible que un mixins y no estar relacionados directamente con la clase que los hosts en contraste a la herencia. Por lo tanto, ahora los vehículos tienen una velocidad, el vehículo puede rodar y el helicóptero puede volar.

Sisi, es posible. No quedarse solo

Ahora digamos que uno desea crear una clase para los aviones técnicamente puede rodar y volar. Nuestro avión está a medio camino entre el coche y el helicóptero. Por supuesto, podríamos utilizar los mixins, pero esto no es ni más ni menos que una forma de herencia múltiple. Sería mucho mejor que la solución actual y podría resolver nuestro problema. La otra solución sería el uso de la composición, que permite aislar los comportamientos en clases especializadas. Vamos, a continuación, utilizar las instancias de estas clases en otras clases. Por lo tanto, permite a las clases limpia, concisa, sin métodos que son superfluas, y muy fácilmente comprobables. El uso de la composición, que es tener acceso a todo el poder de una clase dedicada a manipular un objeto. Por lo que podemos poner en su lugar: reconozco que esta solución es más detallado que los mixins, pero también es mucho más flexible y potente, y en la práctica probablemente más fáciles de la prueba. Para la demostración, yo inicializan los objetos de Ruedas y Alas sobre la marcha, pero en la práctica se tiende a realizar este trabajo de inicialización en el método initialize que permitiría que la persistencia de los objetos y para evitar los problemas de competencia. En la práctica, no hay razón para seguir un método preciso, ¿por qué el uso de la composición, mixins, o la herencia de un modo exclusivo cuando usted puede mezclar los tres. Él debe saber cómo adaptar y utilizar la solución que va a ser más flexible. Por lo tanto, el uso de la herencia, cuando es necesario, recuerda,"un programador es una persona". Vamos a proceder a la mixins cuando uno está en la situación,"un desarrollador está actuando como un empleado". Probablemente será la composición de si esta relación resulta ser algo de un complejo, un objeto que requiere una clase dedicada. Para resumir el contenido de este artículo, piense en sus clases, de modo que ellos son lo más modular posible, no se pegan a ti mismo en una caja de la que no puede llegar a salir, recuerde que para delimitar con claridad las responsabilidades de cada uno. Si las pruebas son difíciles de implementar, es a menudo el signo de un problema de arquitectura que debe poner una pulga en la oreja. en una Vista de aplicación.