2.1 Negara
Negara minangka pola desain prilaku. Iki digunakake ing kasus kasebut nalika, sajrone eksekusi program, obyek kasebut kudu ngganti prilaku gumantung saka negara kasebut.
![negara](https://cdn.codegym.cc/images/article/0b64173f-b514-4ae1-a073-6cbb386a5716/800.jpeg)
Pola kasebut dumadi saka 3 blok:
Konteks minangka kelas sing obyek kudu ngganti prilaku gumantung saka negara.
Negara minangka antarmuka sing kudu ditindakake saben negara konkrit. Liwat antarmuka iki, obyek Konteks sesambungan karo negara kanthi cara delegasi panggilan kasebut. Antarmuka kudu ngemot sarana kanggo umpan balik kanggo obyek sing prilaku bakal diganti.
Kanggo iki, acara digunakake (pola Publisher - Subscriber). Iki perlu kanggo ngganti obyek negara sajrone eksekusi program nalika kedadeyan. Bisa uga ana kasus nalika Konteks dhewe sacara periodik polling obyek negara kanggo transisi.
ConcreteState1, ConcreteState2 - kelas negara beton. Kudu ngemot informasi ing kahanan apa lan ing negara apa obyek bisa pass saka negara saiki. Contone, saka ConcreteState1, obyek bisa pindhah menyang ConcreteState2 lan ConcreteState3, lan saka ConcreteState2 bali menyang ConcreteState1, lan sateruse. Obyek salah sijine kudu ngemot Konteks nalika digawe.
Contone, sampeyan nulis game ing ngendi karakter bisa mlaku, nglangi lan mabur. Yen karakter sampeyan mlebu ing banyu, mula cukup kanggo mbatesi prilaku ing banyu: saiki dheweke ora bisa njupuk, nanging isih duwe sawetara tumindak: nglangi maju, nengen, ngiwa, lsp.
Kahanan karakter sampeyan bisa diterangake kanthi obyek Negara, sing duwe metode sing bisa diarani lan bakal nindakake apa wae. Lan sawise karakter sampeyan mlebu ing banyu, sampeyan mung ngganti referensi menyang obyek Negara liyane ing njero - lan ngganti negara kasebut.
2.2 strategi
Strategi minangka pola desain prilaku kanggo nemtokake kulawarga algoritma, ngenkapsulasi saben siji, lan nggawe bisa diijolake. Iki ngidini sampeyan milih algoritma kanthi nemtokake kelas sing cocog.
Pola Strategi ngidini sampeyan ngganti algoritma sing dipilih preduli saka obyek klien sing nggunakake.
![strategi](https://cdn.codegym.cc/images/article/673c4c44-ec33-4d4e-860f-399abc388d8d/800.jpeg)
Pola Strategi ngidini sampeyan nggunakake aturan utawa algoritma bisnis sing beda-beda gumantung konteks. Iki digunakake ing kasus-kasus sing beda-beda algoritma kudu digunakake ing panggonan sing padha gumantung saka kahanan saiki sistem (utawa lingkungane).
Kakuwatan:
- enkapsulasi saka implementasine saka macem-macem algoritma, sistem dadi independen saka owah-owahan ing aturan bisnis;
- nelpon kabeh algoritma ing siji cara standar;
- ora nggunakake ngalih lan / utawa statements kondisional.
Pola iki meh padha karo pola Negara, nanging ing kene penekanan ora ana ing negara, nanging ing prilaku. Ayo dadi ngomong karakter ing game sampeyan bisa ngganti senjata. Banjur nalika ngganti senjata, sampeyan mung bisa ngganti referensi kanggo obyek sing nerangake carane gegaman iki dianggo.
2.3 Metode Cithakan
![Metode Cithakan](https://cdn.codegym.cc/images/article/be4df3de-e667-4f4d-9ea7-d3b021879bb2/800.jpeg)
Kelas abstrak (kelas abstrak) - nemtokake operasi abstrak sing diganti ing ahli waris kanggo ngetrapake langkah-langkah algoritma; ngleksanakake cara cithakan sing nemtokake balung saka algoritma. Cara Cithakan nelpon diganti lan operasi liyane ditetepake ing kelas Abstrak.
Kelas konkrit (kelas konkrit) - ngleksanakake operasi sing diganti kanthi cara sing dibutuhake kanggo implementasine. Kelas Concrete nganggep yen langkah-langkah invarian saka algoritma bakal ditindakake ing AbstractClass.
Pola iki asring digunakake yen perlu:
- Panggunaan siji saka bagean invariant saka algoritma, ninggalake bagean ganti ing discretion saka ahli waris.
- Lokalisasi lan isolasi kode sing umum kanggo sawetara kelas supaya ora duplikasi.
- Ngidini ahli waris kanggo ngluwihi kode mung ing panggonan tartamtu.
Ya, pola iki nggambarake panggunaan pasangan: kelas abstrak lan implementasine.
2.4 Rantai Tanggung Jawab
Rantai tanggung jawab minangka pola desain prilaku sing dirancang kanggo ngatur tingkat tanggung jawab ing sawijining sistem.
![Rantai tanggung jawab](https://cdn.codegym.cc/images/article/41b55822-dc67-4db3-a0e8-b467bc9f320d/800.jpeg)
Cithakan kasebut dianjurake kanggo digunakake ing kahanan ing ngendi:
- ing sistem sing dikembangake ana klompok obyek sing bisa ngolah pesen saka jinis tartamtu;
- kabeh pesen kudu diproses dening paling siji obyek sistem;
- pesen ing sistem diproses miturut skema "ngolah dhewe utawa ditransfer menyang liyane", yaiku, sawetara pesen diproses ing tingkat sing ditampa, dene liyane diterusake menyang obyek saka level liyane.
2.5 Kenangan
Keeper (Memento) minangka pola desain prilaku sing ngidini sampeyan ndandani lan nyimpen kahanan internal obyek tanpa nglanggar enkapsulasi supaya bisa dibalekake maneh menyang negara kasebut mengko.
![Wali (Kenangan)](https://cdn.codegym.cc/images/article/9b1d2d68-74b7-427c-8d7b-cf44640cf51f/800.jpeg)
Pola Guardian digunakake nalika:
- perlu kanggo nyimpen gambar asli saka negara obyek (utawa bagéan saka iku) kanggo pemugaran sakteruse;
- Antarmuka langsung kanggo njupuk status obyek nyedhiyakake rincian implementasine lan ngilangi enkapsulasi obyek.