Il primo e più importante elemento sarebbe una ben definita unità di riutilizzo e filosofia dietro la loro implementazione. Quando si osservano le implementazioni di riutilizzo di maggior successo, si hanno essenzialmente componenti o plugin. Ciò che rende questi lavori sono:
- Un'interfaccia ben definita che separa l'implementazione e l'uso
- Contratti ben definiti per quell'interfaccia
- Imballaggio coerente (cioè un modo per il consumatore del componente di scoprire ciò che è disponibile)
C # e Java forniscono il concetto di programmazione di un'interfaccia proprio per questo scopo. Le interfacce non richiedono che tutte le implementazioni condividano una gerarchia di oggetti che aiuti a proteggere il codice proprietario dalla modifica di una classe base per fornire maggiore visibilità nella composizione sottoclasse. Molti dei framework di iniezione delle dipendenze da Spring (.Net) a MEF definiscono anche i requisiti di packaging che completano il quadro.
Tutto questo può essere fatto anche senza un linguaggio di programmazione orientato agli oggetti. Ad esempio, C utilizza la parola chiave extern
per definire le funzioni esposte per le applicazioni da utilizzare e structs
per i dati del pacchetto.