Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SOLID and Composition Root

SOLID and Composition Root

[email protected]

April 23, 2021
Tweet

Other Decks in Programming

Transcript

  1. 8IFOXSJUFDPEFʜ XFOFFEUPDPOTJEFSNBOZNBOZUIJOHT w*TJUFBTZGPSPUIFSQFPQMFUPVOEFSTUBOE $BOUIFZDIBOHFJU XJUIPVUGFBSXIFOFWFSUIFZOFFE  w*TJUFBTZUPXSJUFUFTUTXJUIPVUUPPNBOZTFUVQ  fl BLJOFTT

     %PFTUIFUFTUSFQSFTFOUUIFTQFDBOEWBMJEBUFJUQSPQFSMZ  w8IFOUIFTQFDJTDIBOHFE JTJUFBTZUPBQQMZDIBOHFXJUIPVU DIBOHJOHNBOZDPEFTBMMPWFSUIFQMBDF IJEEFOTJEFF ff FDUT  w5ISFBENBOBHFNFOU 0CKFDU-JGFDZDMF 1FSGPSNBODF BOETP POʜ w$PO fl JDUT 4DIFEVMF%FBEMJOF BOETPPOʜ
  2. 4QFD w4IPXJUFNMJTU w'FUDIEBUBGSPNSFNPUFTFSWFS w *GQSFNJVNVTFS DBDIFEBUBPOMPDBMTUPSBHFBOETIPX JUJGGBJMUPGFUDIEBUBGSPNSFNPUFTFSWFS w *GOPUQSFNJVNVTFS TIPXFSSPSJGGBJMUPGFUDIEBUB

    GSPNSFNPUFTFSWFS w#VUʜJGGBJMUPGFUDIEBUBGSPNSFNPUFTFSWFSGPSUIF fi STU UJNF SFUSZUPGFUDIEBUBGSPNSFNPUFTFSWFSPODFBHBJO
  3. ʜ

  4. 8IBU`TXSPOH w*U`TRVJUFEJ ffi DVMUUPVOEFSTUBOE "UMFBTU *DBOOPUTFFXIBU`MMIBQQFO JNNFEJBUFMZ  w5IFSFBSFNBOZIJEEFOEFQFOEFODJFT EJSFDUVTFPGTIBSFEJOTUBODF

    XIJDIBSF IBSEUPDIBOHF w*U`TRVJUFIBSEUPUFTU 
 6TFDPODSFUFSFNPUFEBUBMPBEFS 
 /FFEUPTFUVQBOEDMFBSMPDBMTUPSBHFTXIJDIDPVMEDBVTFQSPCMFNTXIFO UFTUJOHJOQBSBMMFM w*GUIFSFNPUFTFSWFSTQFDJTDIBOHFE OFFEUPDIBOHF6*DPEFFWFOUIPVHIJU`T OPUSFMBUFEUPJUTTQFD w5ISFBEIBOEMJOHNBLFTUFTUTVODPOUSPMMBCMF w.BOZDPO fl JDUTDPVMEIBQQFOCZDIBOHJOHUIFTBNF fi MF
  5. $PNQPTJUJPO3PPU l8IFOZPVXSJUFMPPTFMZDPVQMFEDPEF ZPVDSFBUFNBOZDMBTTFTUPDSFBUFBO BQQMJDBUJPO*UDBOCFUFNQUJOHUPDPNQPTFUIFTFDMBTTFTBUNBOZEJGGFSFOU MPDBUJPOTJOPSEFSUPDSFBUFTNBMMTVCTZTUFNT CVUUIBUMJNJUTZPVSBCJMJUZUP JOUFSDFQUUIPTFTZTUFNTUPNPEJGZUIFJSCFIBWJPS*OTUFBE ZPVTIPVMEDPNQPTF DMBTTFTJOPOFTJOHMFBSFBPGZPVSBQQMJDBUJPO 8IFOZPVMPPLBU$POTUSVDUPS*OKFDUJPOJOJTPMBUJPO

    ZPVNBZXPOEFS EPFTO`UJU EFGFSUIFEFDJTJPOBCPVUTFMFDUJOHB%FQFOEFODZUPBOPUIFSQMBDF :FT JUEPFT  BOEUIBU`TBHPPEUIJOH5IJTNFBOTUIBUZPVHFUBDFOUSBMQMBDFXIFSFZPVDBO DPOOFDUDPMMBCPSBUJOHDMBTTFT 5IF$PNQPTJUJPO3PPUBDUTBTBUIJSEQBSUZUIBUDPOOFDUTDPOTVNFSTXJUIUIFJS TFSWJDFT5IFMPOHFSZPVEFGFSUIFEFDJTJPOPOIPXUPDPOOFDUDMBTTFT UIFNPSF ZPVLFFQZPVSPQUJPOTPQFO5IVT UIF$PNQPTJUJPO3PPUTIPVMECFQMBDFEBT DMPTFUPUIFBQQMJDBUJPO`TFOUSZQPJOUBTQPTTJCMFz
  6. $PNQPTJUJPO3PPU w "DFOUSBMJ[FEQMBDFGPSJOTUBOUJBUJOHBOEXJSJOHDPNQPTJOHBMM PUIFSNPEVMFT DPNQPOFOUT  w 4IPVMEMJWFBTDMPTFBTQPTTJCMFUPUIFBQQ`TFOUSZQPJOU PSBT BMTPLOPXO

    l.BJOz w *TUIFNPTUDPODSFUFQMBDFJOUIFBQQBTJUJOTUBOUJBUFTUIF DPODSFUFDPNQPOFOUTGPSUIFBQQ`TDPNQPTJUJPO5IF $PNQPTJUJPO3PPUJTBOBQQMJDBUJPOEFUBJM5IVT POMZBQQMJDBUJPOT TIPVMEIBWFB$PNQPTJUJPO3PPU w .PEVMFTFYDFQU.BJOTIPVMEO`UOFFE$PNQPTJUJPO3PPUT BTUIFZ TIPVMEO`UIPMEPSEFQFOEPOBQQMJDBUJPOTQFDJGJDEFUBJMT
  7. *OEJDBUPSTUPLFFQDMFBOBSDIJUFDUVSF w-JOFTPGDPEFQFS fi MF 
 *OEJDBUJOHBQPUFOUJBMQSPCMFNXJUI NPEVMBSJUZBOEPQFODMPTFDBQBDJUZJOUIF DPEFCBTF 
 *OEJDBUJOHXIFUIFSUIFQSPKFDUTJTXFMM

    PSHBOJ[FE 
 ˞"IJHISBUJPDBOJOEJDBUFQPUFOUJBMQSPCMFNTXJUIUIFBNPVOUPG SFTQPOTJCJMJUJFTBOEEFQFOEFODJFTWBSJPVTDPNQPOFOUTNJHIUIBWF
  8. *OEJDBUPSTUPLFFQDMFBOBSDIJUFDUVSF w*OEFOUBUJPOTQFS fi MF 
 'JOEJOHFYDFTTDPNQMFYJUZJO DPNQPOFOUT 
 6OEFSTUBOEJOHXIBUJTIBSEPSFWFO JNQPTTJCMFUPUFTU

    
 ˞&BDIOFTUFETUBUFNFOUJODSFBTFTUIFDPNQMFYJUZPGUIFTZTUFN  XIJDIDBOSFTVMUJONPSFTUBUFNBOBHFNFOUBOEBMPUNPSF EJ ffi DVMUZJOUFTUJOH
  9. *OEJDBUPSTUPLFFQDMFBOBSDIJUFDUVSF w$POEJUJPOBMTUBUFNFOUTQFSUFTU fi MF 
 6OEFSTUBOEJOHXIFUIFSDPOEJUJPOBMMPHJD JTCFJOHTFQBSBUFEJONVMUJQMFUFTUT 
 4IPXJOHDPOTJTUFODZGPSGPMMPXJOHUIF TJOHMFSFTQPOTJCJMJUZQSJODJQMF

    
 ˞5IFSFJTNPSFUIBOPOFDBTFUPUFTU XFTIPVMEPQUUPDSFBUFBOFX UFTUBOEFYQMJDJUMZUFTUBOPUIFSCSBODIPGMPHJDJOTUFBEPGJODMVEJOHBMM UIFCSBODIFTJOBTJOHMFUFTU#SFBLEPXOUFTUTXJUINVMUJQMFMPHJDBM CSBODIJOHJOUPNVMUJQMFUFTUTXJUIPOMZPOFMPHJDBMBTTFSUJPO
  10. *OEJDBUPSTUPLFFQDMFBOBSDIJUFDUVSF w .FUIPEBOEQSPQFSUZDPVOUQFSJOUFSGBDFQSPUPDPM 
 *EFOUJGZJOHHPPEEFTJHOQSJODJQMFT EFWFMPQFSEJTDJQMJOF BOEDPOTJTUFODZ w .FUIPEBOEQSPQFSUZDPVOUQFSJOUFSGBDFQSPUPDPM PWFSUJNF

    
 *EFOUJGZJOHHPPEEFTJHOQSJODJQMFT EFWFMPQFSEJTDJQMJOF BOEDPOTJTUFODZ 
 ˞#SFBLJOHUIFDPOUSBDUUIFJOUFSGBDFP ff FSTBOEBEEJOHBEEJUJPOBMCFIBWJPSUPGBDJMJUBUF UIFJSUBTLTIPVMECFDPOTJEFSFEIBSNGVMBTJUDBOCSFBLOPUPOMZUIFJOUFSGBDF TFHSFHBUJPOCFUXFFONPEVMFTBOEDPNQPOFOUTCVUBMTPUIF-JTLPW4VCTUJUVUJPO 1SJODJQMF SFTVMUJOHJOBNPSFSJHJEBOEGSBHJMFTZTUFN
  11. *OEJDBUPSTUPLFFQDMFBOBSDIJUFDUVSF w$PNNFOUTQFSQSPEVDUJPO fi MF 
 *OEJDBUJOHJGUIFSFBSFJTTVFTUFDIEFCUXPSL UPCFEPOFPVUTJEFTIBSFEQSPKFDUNBOBHFNFOU UPPMT OPUUSBDLFEPSWJTJCMFUPUIFXJEFSUFBN 


    ˞*ODSFBTFUIFQSPCBCJMJUZPGEJWFSHJOHGSPNBTJOHMFTPVSDFPG USVUI MJLFBQSPKFDUNBOBHFNFOUUPPM XIJDISFTVMUTJOBMBDLPGGVMM USBOTQBSFODZXJUINFNCFSTPGZPVSUFBNBOEPUIFST
  12. *OEJDBUPSTUPLFFQDMFBOBSDIJUFDUVSF w4FUVQMJOFTPGDPEFQFSUFTU fi MF 
 6OEFSTUBOEJOHJGUIFSFJTBOFYDFTTPG EFQFOEFODJFTBOEDPO fi HVSBUJPOGPSUIFTZTUFN VOEFSUFTUUPXPSL

    
 .POJUPSJOHDPOTJTUFODZXJUIHPPEEFTJHO QSBDUJDFT TVDIBTDPNQPOFOUTIBWJOHBTJOHMF SFTQPOTJCJMJUZPSDPNQPOFOUTCFJOHEFDPVQMFE GSPNPUIFSDPODSFUFDPNQPOFOUTVTJOH EFQFOEFODZJOWFSTJPO
  13. *OEJDBUPSTUPLFFQDMFBOBSDIJUFDUVSF w'JMFDPVOUQFSDPNNJU 
 1PUFOUJBMMZVOEFSTUBOEJOHUIFEFWFMPQFST`MFWFMPGEJTDJQMJOF 
 'JOEJOHPVUXIFUIFSUIFTZTUFNJTCFJOHEFWFMPQFEJOTNBMMPSCJH CBUDIFT 
 1SFEJDUJOHBMFWFMPGTZTUFNSFWFSTJCJMJUZ VOEPDPTU

    
 ˞5IJTDBOTJHOJGZNPEVMBSJUZ MPPTFDPVQMJOHJOUIFDPEFCBTFBOE EFWFMPQFSEJTDJQMJOF"TNBMMWBMVFGPSUIJTSBUJPVTVBMMZEJDUBUFT UIBUEFWFMPQFSTXPSLJOTNBMMCBUDIFT GPDVTJOHPOMZPOTQFDJ fi D DPNQPOFOUTBOEBSFOPUXPSSJFEBCPVUUIFJSQMBDFJOUIFSFTUPG UIFTZTUFN
  14. *OEJDBUPSTUPLFFQDMFBOBSDIJUFDUVSF w3FDVSSFOU fi MFDIBOHFTDPNNJUUFEPS NFSHFEUPHFUIFS 
 *EFOUJGZJOHXFBLBCTUSBDUJPOT 
 ˞*OEJDBUFTBQPUFOUJBMMZIJEEFODPVQMJOHCFUXFFODPNQPOFOUT *EFOUJGZJOH

    fi MFTUIBUPGUFODIBOHFUPHFUIFSNBZFYQPTFXFBL BCTUSBDUJPOTCFUXFFODPNQPOFOUT4VDIBGBDUNJHIUOPUCF IBSNGVMXJUIJOBNPEVMF CVUJUTBMBSNJOHXIFODSPTTJOHNPEVMF CPVOEBSJFTUIBU POUIFTVSGBDF TFFNEFDPVQMFE FHDIBOHF BOBMZUJDTBDDPSEJOHUP6*DIBOHF