Pregunta

Steve Yegge publicó recientemente un publicación de blog interesante En lo que él llama el patrón de diseño universal. Allí se detalla el uso de prototipos como herramienta de modelado, en lugar de clases. Me gusta la forma en que esto introduce menos acoplamiento en comparación con la herencia. Pero eso es algo que también se puede obtener con las clases, implementando clases en términos de otras clases, en lugar de herencia. ¿Alguien más tiene historias exitosas sobre el uso de prototipos, y tal vez pueda ayudar a explicar dónde usar prototipos es ventajoso en comparación con las clases? Supongo que se trata de modelado estático versus modelado dinámico, pero más ejemplos serían bienvenidos.

¿Fue útil?

Solución

Un poco interesante es que es fácil hacer que un OO de lenguaje basado en un prototipo sea difícil, pero es difícil hacer que un OO de lenguaje esté basado en un prototipo.

No está del todo claro cómo sería OO como prototipo, aparte de la composición en comparación con la herencia, como usted menciona.

Un lenguaje prototipo facilita el comportamiento complejo de herencia. Puede implementar herencia múltiple , mixin -como comportamiento, o simplemente elija y elija lo que desea de un objeto para agregar a otro.

artículo de Wikipedia menciona: " Los defensores de la programación basada en prototipos a menudo argumentan esa clase Los lenguajes basados ??en la cultura fomentan un modelo de desarrollo que se centra primero en la taxonomía y las relaciones entre clases. En contraste, se considera que la programación basada en prototipos alienta al programador a centrarse en el comportamiento de algunos conjuntos de ejemplos y solo se preocupa más tarde por clasificar estos objetos en objetos arquetípicos que luego se usan de manera similar a las clases. & Quot;

Eso no quiere decir que el paradigma prototipo sea todos los pros y no los contras. Si OO es más restrictivo, es porque elige serlo. Puedo ver dónde toda esa flexibilidad podría causarle problemas si no tiene cuidado.

Otros consejos

Los prototipos son una forma de herencia, es solo que los objetos heredan atributos y comportamiento directamente de otros objetos, en lugar de obtener sus atributos y comportamiento de su clase, que hereda de otras clases.

Para ver ejemplos, consulte cualquier código orientado a objetos en un lenguaje basado en prototipos como , por ejemplo, JavaScript.

Para aquellos interesados, NewtonScript era (es) un lenguaje dual: tenía prototipos y tuviste clases Puede elegir si desea heredar de una clase, de un prototipo o de ambos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top