Recientemente recordé haber leído un libro sobre patrones de diseño para Java y debido a que todavía no entiendo cómo se hace esto desde la memoria en OOP, decidí escribir mi implementación en C.
Decidí volver a mirar en este libro de Java sobre cómo se implementa este patrón. Miré todo el capítulo, miré el código, pero no me quedó nada en la cabeza. Por qué ) ¿Es correcto pensar en estilo oop? Por ejemplo, conozco un poco de Java y C ++, pero ¿qué tan conveniente es hacer la implementación para que sea agradable de usar y no se olvide? También para el experimento, miré cómo se hace esto en c ++. Bueno, sinceramente, es difícil para mí mirar ese código, tengo que leer cada línea y pensar.
Entonces, ¿qué he hecho que pueda ser útil en el futuro en la programación? Conoce la implementación en
github . Quiero explicar la facilidad de uso de lo que escribí. En esta implementación, no necesita crear una estructura que almacene datos. La estructura subyacente en sí está detrás de escena. Por ejemplo, quiero suscribirme en un archivo al editor de COMERCIO. Este editor, por ejemplo, me dará descuentos en productos. Considero al observador como una función ordinaria y lo declaro de acuerdo con la regla.
void sub_trade ( void *event, void *data ) { }
Ahora quiero crear un editor y suscribirme a eventos. En este caso, no necesita llamar a nada extra. Solo es necesario indicar a qué editor transferir el suscriptor.
enum { TRADE }; init_publisher ( TRADE, sub_trade, NULL );
Y eso es todo. Nos suscribimos a la editorial. Ahora en otro archivo, por ejemplo, quiero hacer un boletín en el chat en línea. No sé lo conveniente que sería hacer esto en OOP, y aún más en Java, pero con la ayuda de mi implementación, esto se hace simplemente. Por cierto, Java probablemente tendría que usar métodos estáticos.
Estoy declarando otra función de suscriptor.
enum { TRADE }; void notify_chat_trade ( void *event, void *data ) { } ... init_publisher ( TRADE, notify_chat_trade, NULL );
Ahora en el archivo donde se reciben y analizan nuevos datos, llegan los datos de descuento. Solo necesito llamar a dicha función y los datos se transferirán cuando sea necesario.
send_event ( TRADE, 10 );
Por lo tanto, es conveniente y simple sin las dificultades de uso, puede obtener el resultado deseado. Creo que lo hice bien.
Por cierto, ¿quién me puede explicar, es una programación estructural o de procedimiento?