“Closed for modification.” Extending the behavior of a module does not result in changes to the source or binary code of the module. The binary executable version of the module, whether in a linkable library, a DLL, or a Java .jar, remains untouched.
Hall, Gary McLean (2014-10-10). Adaptive Code via C#: Agile coding with design patterns and SOLID principles (Developer Reference) (p. 208). Pearson Education. Kindle Edition.
In Adaptive Code tramite C #, l'autore cita la spiegazione di Robert C. Martin per Closed for Modification. Come dovremmo capire "La versione eseguibile binaria del modulo, che sia in una libreria collegabile, in una DLL o in Java .jar, rimane invariata."
Possiamo utilizzare modelli di scale per l'albero delle dipendenze in cui le interfacce e le implementazioni si trovano in diversi assembly e possiamo estendere le implementazioni in diversi assembly, ma non siamo sicuri di quanto ragionevole sia. Non penso che copiare il resto del comportamento nella nuova assemblea abbia senso. Qualcuno può per favore visualizzare questa spiegazione con un esempio.