JavaRush /Java Blog /Random-TK /Java-da döwlet we strategiýa nagyşlarynyň arasyndaky tapa...
0xFF
Dereje
Донецк

Java-da döwlet we strategiýa nagyşlarynyň arasyndaky tapawut

Toparda çap edildi
Esasy Java programmalarynda Döwlet we Strategiýa nagyşlaryny dogry ulanmak üçin Java programmistleri üçin olaryň arasyndaky tapawuda anyk düşünmek möhümdir. Iki nagyş, döwlet we strategiýa birmeňzeş gurluşa eýe bolsa-da, ikisi hem SOLID ýörelgelerinde “O” -ny görkezýän açyk / ýapyk ýörelgä esaslanýar , niýetleri düýbünden başga . Java-daky StrategiýaJava-da döwlet we strategiýa nagyşlarynyň arasyndaky tapawut - 1 nagşy, müşderä ýerine ýetiriş çeýeligini üpjün etmek üçin baglanyşykly algoritmler toplumyny jemlemek üçin ulanylýar . Müşderi, ulanýan synpyň mazmunyny üýtgetmän iş wagty islendik algoritmi saýlap biler . Strategiýa nagşynyň käbir meşhur mysallary şifrlemek, gysmak ýa-da sortlamak ýaly algoritmleri ulanýan kod ýazmakdyr. Beýleki tarapdan, Döwlet nagşy, obýektiň dürli ştatlarda başgaça hereket etmegine mümkinçilik berýär. Hakyky dünýäde bir obýektiň köplenç ýagdaýlary bolýar we dürli ştatlarda başgaça hereket edýär, mysal üçin, söwda enjamy diňe döwletde bolsa haryt satýar , teňňe salýançaňyz satylmaýar. Indi Strategiýa bilen Döwlet nagyşlarynyň arasyndaky tapawudy aýdyň görüp bilersiňiz, bular dürli niýetler. Döwlet nagşy, bir obýektiň ýagdaýy dolandyrmagyna kömek edýär, Strategiýa nagşy bolsa müşderä başga özüni alyp barşyny saýlamaga mümkinçilik berýär. Görmek beýle aňsat däl başga bir tapawut, özüni alyp barşyň üýtgemegine kim itergi berýär. Strategiýa nagşy meselesinde bu kontekste dürli strategiýalary hödürleýän müşderi; Döwlet görnüşinde geçiş geçişiň mazmuny ýa-da ýagdaýy bilen dolandyrylýar. Mundan başga-da, döwlet obýektindäki döwlet üýtgeşmelerini özüňiz dolandyrýan bolsaňyz, kontekste salgylanma bolmaly, mysal üçin, söwda enjamy kontekstiň häzirki ýagdaýyny üýtgetmek usulyny çagyryp bilmeli. Başga bir tarapdan, Strategiýa obýekti hiç haçan kontekste salgylanmany öz içine almaýar, müşderiniň özi saýlan Strategiýasyny kontekste geçirýär. Döwlet we strategiýa nagyşlarynyň arasyndaky tapawut , Java nagyşlary baradaky meşhur söhbetdeşlik soraglarynyň biridir , Java nagyşlary baradaky bu makalada has içgin serederis. Java-da Strategiýa we Döwlet nagyşlarynyň arasyndaky käbir meňzeşlikleri we tapawutlary öwreneris, bu nagyşlara düşünişiňizi ýokarlandyrmaga kömek eder. StrategyhasCoinsetState()

Döwlet bilen strategiýanyň görnüşleriniň meňzeşligi

Döwlet we strategiýa nagyşlarynyň UML diagrammasyna seretseňiz, ikisiniň hem biri-birine meňzeýändigini görersiňiz. Özüni alyp barşyny üýtgetmek üçin döwleti ulanýan obýekt obýekt hökmünde tanalýar , şonuň ýaly-da özüni alyp barşyny üýtgetmek üçin Strategiýany ulanýan obýekte -obýekt Contextdiýilýär . ContextMüşderiniň Context-object bilen aragatnaşyk saklaýandygyny ýadyňyzdan çykarmaň. Döwlet nusgasy bolan ýagdaýynda, kontekst delegatlary häzirki obýekt hökmünde saklanýan döwlet obýektine çagyryş usullaryny çagyrýarlar, we Strategiýa nusgasy bolan ýagdaýynda, kontekst Strategiýa obýektini parametr hökmünde ulanýar ýa-da döredilende berilýär. obýektiň mazmuny. Java-da Döwlet nagşynyň UML diagrammasy Java-da döwlet we strategiýa nagyşlarynyň arasyndaky tapawut - 2 Döwlet nagşy üçin bu UML diagrammasy Java-da obýekte gönükdirilen söwda enjamynyň dizaýnynyň nusgawy meselesini görkezýär. Söwda maşynynyň ýagdaýynyň, soňra belli bir ýagdaýy görkezmek üçin ýerine ýetirilişi bolan interfeýs arkaly görkezilýändigini görüp bilersiňiz. Şeýle hem, her ştatda kontekstde çagyrylan hereketleriň netijesinde başga bir döwlete geçmek üçin obýekt kontekstine salgylanmalar bar. Java-da Strategiýa nagşynyň UML diagrammasy Java-da döwlet we strategiýa nagyşlarynyň arasyndaky tapawut - 3 Strategiýa nagşy üçin bu UML diagrammasy dürli görnüşli funksional ýerine ýetirişleri öz içine alýar. Sortirleme algoritmleriniň köpdügi sebäpli, bu dizaýn nagşy müşderä obýektleri sortlanda algoritm saýlamaga mümkinçilik berýär. Aslynda, Java Collection çarçuwasyCollections.sort() bu nagşy Java-da obýektleri tertiplemek üçin ulanylýan usuly amala aşyrmak üçin ulanýar . Onlyeke-täk tapawut, müşderä sortlaşdyryş algoritmini saýlamaga rugsat bermegiň ýerine, deňeşdiriji ýa-da Deňeşdirilýän interfeýsiň mysalyny Java-a geçirip, deňeşdirme strategiýasyny kesgitlemäge mümkinçilik berýär . Java-da bu iki esasy dizaýn nagşynyň arasyndaky birnäçe meňzeşlige seredeliň:
  1. Iki nagyş, döwlet we strategiýa, ulanýan obýektiň mazmunyna täsir etmezden täze döwlet we strategiýa goşmagy aňsatlaşdyrýar.

  2. Bularyň ikisi hem koduňyzy açyk / ýapyk ýörelgä laýyklykda saklaýar , ýagny dizaýn giňeltmeler üçin açyk bolar, ýöne üýtgetmek üçin ýapyk. Döwlet we strategiýa nagyşlary bolan ýagdaýynda obýektiň mazmuny üýtgetmek, täze döwletler ýa-da täze strategiýalar girizmek üçin ýapyk, ýa-da başga bir döwletiň mazmunyny üýtgetmek ýa-da minimal üýtgeşmeler girizmek zerurlygy ýok.

  3. Obýektiň kontekstiniň, obýektiň başlangyç görnüşinde Döwlet nagşyndan başlaýşy ýaly, Java-da Strategiýa nagşy ýagdaýynda obýekt kontekstinde-de deslapky strategiýa bar.

  4. Döwlet nagşy, dürli obýekt döwletleri görnüşinde dürli özüni alyp barşy, Strategiýa nagşy dürli obýekt strategiýasy görnüşinde dürli özüni alyp barşyny görkezýär.

  5. Iki nagyş, Strategiýa we Döwlet, özüni alyp barşyň ýerine ýetirilişiniň kiçi toparlaryna baglydyr. Her anyk strategiýa abstrakt strategiýany giňeldýär; her ştat döwleti görkezmek üçin ulanylýan interfeýsiň ýa-da abstrakt synpyň kiçi toparydyr.

Java-da Strategiýa we döwlet nagyşlarynyň arasyndaky tapawutlar

Şeýlelik bilen, döwlet we strategiýanyň görnüşleriniň gurluş taýdan meňzeşdigini, ýöne niýetiniň başgaçadygyny bilýäris. Geliň, bu dizaýn nagyşlarynyň arasyndaky käbir möhüm tapawutlara seredeliň.
  1. Strategiýa nagşy baglanyşykly algoritmleriň toplumyny öz içine alýar we müşderä iş wagtynda düzümine we wekiliýetine garamazdan üýtgäp bilýän hereketleri ulanmaga mümkinçilik berýär, beýleki tarapdan, döwlet nagşy synpyň dürli ştatlarda dürli özüni alyp barşyny görkezmegine kömek edýär.

  2. Döwlet we Strategiýa nagyşlarynyň arasyndaky indiki tapawut, döwlet obýektiň ýagdaýyny gurşap alýar , Strategiýa nagşy bolsa algoritmi ýa-da strategiýany öz içine alýar. Döwlet bir obýekt bilen baglanyşykly bolany üçin, ony gaýtadan ulanyp bolmaýar, ýöne strategiýany ýa-da algoritmi kontekstinden bölüp, gaýtadan ulanyp bileris.

  3. Döwlet görnüşinde şahsy ştatlaryň arasynda geçişleri amala aşyrmak üçin kontekste salgylanma bolup biler, emma Strategiýada ulanylýan kontekste salgylanma ýok.

  4. Strategiýanyň durmuşa geçirilmegi, ony ulanjak obýektiň parametri hökmünde geçirilip bilner, mysal üçin Collection.sort () strategiýa bolan Deňeşdiriji alýar. Beýleki tarapdan, ýagdaý obýektiň kontekstiniň bir bölegi bolup, wagtyň geçmegi bilen obýektiň konteksti bir ştatdan beýlekisine geçýär.

  5. Strategiýa we Döwlet ikisi hem açyk / ýapyk ýörelgä eýerýän hem bolsa, Strategiýa ýeke-täk jogapkärçilik ýörelgesine eýerýär, sebäbi her bir strategiýada aýratyn algoritm bar, dürli strategiýalar biri-birine garaşsyz. Bir strategiýany üýtgetmek, başga bir strategiýany üýtgetmegi talap etmeýär.

  6. Strategiýa bilen döwlet nagyşlarynyň arasyndaky başga bir nazaryýet tapawudy, döredijiniň obýektiň “Nädip” bölegini kesgitlemegi, meselem, “sort” obýektiň maglumatlary nädip tertipleşdirýändigi, beýleki tarapdan, döwlet nagşy “näme” we “haçan” kesgitleýär. obýektiň bölekleri, meselem, obýekt belli bir ýagdaýda bolanda näme edip biler.

  7. Döwlet geçişleriniň tertibi Döwlet görnüşinde gowy kesgitlenendir, Strategiýa nusgasy üçin beýle talap ýok. Müşderi öz islän strategiýasynyň islendik ýerine ýetirilişini saýlap biler.

  8. Strategiýa nagşynyň käbir umumy mysallary sortlamak algoritmleri, şifrlemek algoritmleri ýa-da gysyş algoritmleri ýaly algoritmleriň jemlenmegi bolup durýar. Koduňyzyň dürli baglanyşykly algoritmleri ulanmalydygyny görseňiz, Strategiýa nusgasyny ulanmagy göz öňünde tutuň. Başga bir tarapdan, döwlet nagşynyň ulanylmagyny ykrar etmek gaty aňsat, eger köp şertli şertli beýannamalar bolmazdan döwlet we döwlet geçişlerini dolandyrmaly bolsaňyz, Döwlet nusgasy ulanmagyň dogry nusgasydyr.

  9. Döwlet we Strategiýa nagyşlarynyň arasyndaky iň soňky, ýöne iň möhüm tapawutlaryň biri, Strategiýa üýtgetme Müşderi tarapyndan amala aşyrylýar, döwlete üýtgeşme kontekst ýa-da obýektiň ýagdaýy bilen amala aşyrylyp bilner.

Bularyň hemmesi Java-daky Döwlet we Strategiýa nagyşlarynyň arasyndaky tapawut . Aýdyşym ýaly, ikisi hem sapaklarynda we UML diagrammalarynda meňzeýär, ikisi hem açyk / ýapyk ýörelgeleri üpjün edýär we özüni alyp barşyny jemleýär. Strategiýa nagyşyny iş wagty kontekstde ýüze çykýan algoritmi ýa-da strategiýany, belki parametr ýa-da birleşdirilen obýekt hökmünde jemlemek üçin ulanyň we Java-da döwlet geçişlerine gözegçilik etmek üçin Döwlet nusgasyny ulanyň. Asyl şu ýerde
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION