fabrica de clasă în c # - preaplin stivă în limba rusă

Acest lucru nu este răspunsul plin, am să vă dau doar câteva exemple în cazul în care acest lucru pot beneficia. Răspunsul real, probabil, cineva va mai târziu; poshu scuze pentru defectele din sintaxa, dacă este cazul,

De exemplu, dacă avem un fragment de cod:

Atunci nu este bătut în cuie doar ferm într-o anumită clasă, dar, de asemenea, instanța a acestei clase este generată pe zbor, și astfel, runProcess () nu poate fi pe deplin testate - atunci când încearcă să testeze este necesar să se uite înapoi la proces rabotsposobnost. Procesului de ineficiență și umple cele două teste dintr-o dată. Factory vă permite să rezolve relația dur, menținând chiar în timp ce clasa exactă folosită:

În acest caz, chiar generarea obiectului scos din afara sălii de clasă, și puteți face un (fals) ProcessFactory bate joc. care va reveni întotdeauna o instanță care rulează ca și în cazul în care începe într-adevăr cu succes a procesului. Samu ProcessFactory deși testarea nu este necesară - nu există decât o singură linie unică.

În plus, fabrica separă creând o instanță a clasei de la locul de apel. Acest lucru face posibilă punerea în aplicare funcționalitate suplimentară, de exemplu, template-uri Builder, muscă:

În acest exemplu, codul extern nu mai poate avea grijă de initializarea o instanță de clasă, deoarece fabrica combina generator de șabloane.

Acest lucru se aplică atunci când există succesori cu funcționalitate similară, dar din anumite motive, crearea acestor moștenitori ai constructorului nu este adecvată.

De exemplu, WebRequest are o metoda statica Creare. care, în funcție de protocolul transmis Uri creează clasa corespunzătoare, http - System.Net.HttpWebRequest. ftp - System.Net.FtpWebRequest, etc ...

De asemenea, despre System.Security.Cryptography.SymmetricAlgorithm.

articole similare