Collegamento di un'opzione modulare a un programma senza creare una dipendenza

3

Mi piacerebbe rendere i miei programmi molto meno complicati da estendere o creare, sto immaginando uno scenario in cui l'utente finale ha una varietà di opzioni di casella di controllo che influenzano il modo in cui il programma interagisce. Qualcosa come in un elaboratore di testi in cui dici sottolineatura, grassetto o in un gioco in cui dici, includi questa funzione escludi quella. Solo opzioni in generale.

Come si creano opzioni dinamiche che modificano il comportamento dei programmi senza far dipendere il programma da quella caratteristica se si decide di rimuovere completamente tale opzione? E come si chiama questo tipo di programmazione?

Si usano variabili globali, (nonostante alcuni linguaggi suggeriscano il contrario)

Credo che forse un modo alternativo (metaforico) per formulare questa domanda sarebbe: come faccio a rendere il mio codice più simile ai blocchi lego e meno come uno di quei puzzle tridimensionali in legno?

Esempio puoi usare: mazzo di carte, opzioni per rimuovere tutte le prese o tutti i re.

    
posta Mallow 05.12.2011 - 19:31
fonte

1 risposta

4

Si chiama architettura plugin / hook. È molto comune per i sistemi di gestione dei contenuti, i bug tracker e il software di controllo della versione. Fondamentalmente, invece di creare dipendenze dirette, lasciate plugins registrare callback che vengono chiamati in determinati punti, chiamati hook .

Ad esempio, molti software di controllo del codice sorgente ti permettono di registrare i ganci di pre-commit. Ogni volta che qualcuno sta per eseguire un commit, il software di controllo del codice sorgente chiama tutti i callback registrati per il gancio di pre-commit. Passa cose come il messaggio di commit come argomenti. Se una delle funzioni di callback restituisce false, non consentirà il commit. Ciò consente al cliente di scrivere un plug-in che richiede determinate informazioni nel messaggio di commit senza dover modificare il software di base.

    
risposta data 05.12.2011 - 19:56
fonte

Leggi altre domande sui tag