Immagina una semplice architettura basata su moduli, c'è il sistema Core che contiene una serie di valori casuali. È possibile creare moduli / plug-in che interagiranno con questo array.
- Il plugin A vuole anteporre un valore in qualche array globale
- Il plugin B vuole lo stesso ma un valore diverso
- Il plugin C metterà un valore alla fine
Il plug-in A e il plug-in B entrambi vogliono che i loro dati siano all'inizio dell'array per definizione. Ovviamente non è possibile, ma ora dipende completamente dall'ordine di esecuzione, e se l'ordine cambia il comportamento del programma sarà diverso.
Come fa un plugin a dire al sistema centrale che ha davvero bisogno di avere questo valore nel primo elemento dell'array. Che cosa farebbe il core se entrambi i plug-in specificassero che "realmente ha davvero bisogno di essere così".
Idealmente un plugin non interessa e non conosce altri plugin, immagina che ci siano 20 plugin. Sarebbe un casino se provassi a considerare l'un l'altro plug-in in ogni plugin.
Ho pensato di aggiungere una valutazione basata sulla rilevanza. Ad esempio, ogni plugin che interagisce con l'array deve specificare un valore di pertinenza (un enum per esempio) che specifichi quanto sia importante che il cambiamento debba essere esattamente come quello, o se non è importante.