Necesito algunos recursos que hablan sobre cómo diseñar su software para que sea extensible, es decir, para que otras personas puedan escribir complementos/complementos que le agreguen funcionalidad.¿Cómo diseñar software extensible (arquitectura de complemento)?
¿Qué me recomiendas? ¿Hay algún libro que discuta el tema?
Preferiría algo que sea breve y directo; un poco de teoría y un montón de ejemplos concretos.
No estoy apuntando a un idioma específico, quiero ser capaz de entender la idea central para poder implementarla en cualquier idioma.
Y por la misma razón, prefiero no hacerlo usando un framework que otro construyó (a menos que el framework no sea de muy alto nivel, es decir, no oculte demasiado mucho), por el momento solo quiero educarme sobre el tema y experimentar con diversas formas de implementarlo. Además, un marco usualmente asume el conocimiento del usuario sobre el tema.
ACTUALIZACIÓN
No estoy preguntando sobre programación orientada a objetos o permitir que mis clases a ser heredados. Estoy hablando de diseñar una aplicación que se implementará en un sistema, de modo que pueda ser extendida por complementos de terceros DESPUÉS de su implementación.
Por ejemplo, Notepad ++ tiene una arquitectura de complemento donde puede colocar un archivo .dll en la carpeta de complementos y agrega funcionalidad a la aplicación que no estaba allí, como la selección de colores o la inserción de fragmentos, o muchas otras cosas (una amplia gama de funcionalidades).
creo que usted encontrará que la mayoría de los entornos enchufables proporcionan clases base para usar al escribir un complemento. Su complemento de terceros personalizado derivaría de la clase base y extendería su funcionalidad de "plug-in estándar". – Kieveli
Descubrirá que la naturaleza extensible de software como Firefox y Notepad ++ proviene de sus raíces de diseño OO. El mismo principio que hace que sus clases sean extensibles ayudará a que su software en general sea extensible. – orokusaki