Basso accoppiamento quando si usano classi sigillate?

4

In genere, quando si tenta di separare le classi, utilizzo Inversion of Control. Ultimamente sto usando una libreria di terze parti i cui componenti sono sigillati. Ci sono schemi di progettazione per gestire questa situazione? Hanno classi di componenti multiple che sono sigillate e ho abbastanza spesso bisogno di usarle. Stavo per ereditarmi e dargli un'interfaccia per operare fino a quando ho notato che era sigillato e impossibile da fare.

La libreria non cambia molto (solo nelle versioni principali), quindi potrei tranquillamente cavartela mantenendo le classi accoppiate in questo particolare scenario, tuttavia questo mi fa pensare a casi in cui questo non sarebbe il caso .

Come fai a tenere basso l'accoppiamento nel codice quando utilizzi classi sigillate di terze parti?

    
posta Shelby115 14.04.2015 - 14:23
fonte

1 risposta

2

Come alcuni dei commenti citati, potresti consumare la libreria in modo errato o potrebbe non essere una libreria ben progettata. Ma ignorando questo, un modello di variazione della facciata sembra appropriato.

Non ho abbastanza informazioni sulla tua applicazione, ma posso pensare a due approcci dalla cima della mia testa:

semplice

class MyObject
{
     private _libraryObject;
     public MyObject(LibraryObject source)
     {
           _libraryObject = source;
     }

     public MyProperty1
     {
         get { return _libraryObject.Property1; }
         set { _libraryObject.Property1 = value; }
     }
 }

Complesso, ma ancora più disaccoppiato

//Inside repository class
GetObject()
{
     MyObject myObject = new MyObject();
     Mapper.Map(libraryObject, myObject); //Translate a LibraryObject to MyObject
     return myObject;
}

Ora puoi fare ciò che vuoi con questa classe, incluso ereditare da essa.

    
risposta data 12.06.2015 - 15:57
fonte