2.1 రాష్ట్రం
రాష్ట్రం అనేది ప్రవర్తనా రూపకల్పన నమూనా. ప్రోగ్రామ్ అమలు సమయంలో, వస్తువు దాని స్థితిని బట్టి దాని ప్రవర్తనను మార్చుకోవాల్సిన సందర్భాలలో ఇది ఉపయోగించబడుతుంది.
![రాష్ట్రం](https://cdn.codegym.cc/images/article/0b64173f-b514-4ae1-a073-6cbb386a5716/800.jpeg)
నమూనా 3 బ్లాక్లను కలిగి ఉంటుంది:
సందర్భం అనేది ఒక తరగతి, దీని వస్తువులు స్థితిని బట్టి వారి ప్రవర్తనను మార్చుకోవాలి.
రాష్ట్రం అనేది ప్రతి కాంక్రీట్ స్టేట్లు తప్పనిసరిగా అమలు చేయాల్సిన ఇంటర్ఫేస్. ఈ ఇంటర్ఫేస్ ద్వారా, కాంటెక్స్ట్ ఆబ్జెక్ట్ దానికి మెథడ్ కాల్లను డెలిగేట్ చేయడం ద్వారా స్టేట్తో ఇంటరాక్ట్ అవుతుంది. ఇంటర్ఫేస్లో ప్రవర్తనను మార్చాల్సిన వస్తువుకు ఫీడ్బ్యాక్ కోసం మార్గాలు ఉండాలి.
దీని కోసం, ఒక ఈవెంట్ ఉపయోగించబడుతుంది (నమూనా ప్రచురణకర్త - చందాదారు). ఈవెంట్స్ సంభవించినప్పుడు ప్రోగ్రామ్ యొక్క అమలు సమయంలో రాష్ట్ర వస్తువును భర్తీ చేయడానికి ఇది అవసరం. సందర్భం స్వయంగా పరివర్తన కోసం రాష్ట్ర వస్తువును క్రమానుగతంగా పోల్ చేసే సందర్భాలు ఉండవచ్చు.
ConcreteState1, ConcreteState2 - కాంక్రీట్ రాష్ట్రాల తరగతులు. ఆబ్జెక్ట్ ప్రస్తుత స్థితి నుండి ఏ పరిస్థితులలో మరియు ఏ పరిస్థితులలో పాస్ చేయగలదో సమాచారాన్ని కలిగి ఉండాలి. ఉదాహరణకు, ConcreteState1 నుండి, ఒక వస్తువు ConcreteState2 మరియు ConcreteState3కి, మరియు ConcreteState2 నుండి ConcreteState1కి తిరిగి వెళ్ళవచ్చు మరియు మొదలైనవి. సృష్టించినప్పుడు వాటిలో ఒక వస్తువు తప్పనిసరిగా సందర్భాన్ని కలిగి ఉండాలి.
ఉదాహరణకు, మీరు ఒక పాత్ర పరిగెత్తగల, ఈత కొట్టగల మరియు ఎగరగలిగే గేమ్ను వ్రాస్తున్నారు. మీ పాత్ర నీటిలోకి వస్తే, నీటిలో అతని ప్రవర్తనను పరిమితం చేయడం సహేతుకమైనది: ఇప్పుడు అతను షూట్ చేయలేడు, కానీ అతనికి ఇంకా కొన్ని చర్యలు ఉన్నాయి: ముందుకు, కుడి, ఎడమ, మొదలైనవి.
మీ పాత్ర యొక్క స్థితిని స్టేట్ ఆబ్జెక్ట్ ద్వారా వర్ణించవచ్చు, ఇది పిలవబడే మరియు ఏదైనా చేయగల పద్ధతులను కలిగి ఉంటుంది. మరియు మీ పాత్ర నీటిలోకి ప్రవేశించిన తర్వాత, మీరు దానిలోని మరొక రాష్ట్ర వస్తువుకు సూచనను మార్చండి - మరియు అది దాని స్థితిని మారుస్తుంది.
2.2 వ్యూహం
స్ట్రాటజీ అనేది అల్గారిథమ్ల కుటుంబాన్ని నిర్వచించడం, ప్రతి ఒక్కటి సంగ్రహించడం మరియు వాటిని పరస్పరం మార్చుకునేలా చేయడం కోసం ఒక ప్రవర్తనా రూపకల్పన నమూనా. తగిన తరగతిని నిర్వచించడం ద్వారా అల్గారిథమ్ని ఎంచుకోవడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది.
ఎంచుకున్న అల్గారిథమ్ని ఉపయోగించే క్లయింట్ ఆబ్జెక్ట్లతో సంబంధం లేకుండా మార్చడానికి వ్యూహ నమూనా మిమ్మల్ని అనుమతిస్తుంది.
![వ్యూహం](https://cdn.codegym.cc/images/article/673c4c44-ec33-4d4e-860f-399abc388d8d/800.jpeg)
సందర్భాన్ని బట్టి విభిన్న వ్యాపార నియమాలు లేదా అల్గారిథమ్లను ఉపయోగించడానికి వ్యూహ నమూనా మిమ్మల్ని అనుమతిస్తుంది. సిస్టమ్ యొక్క ప్రస్తుత స్థితి (లేదా దాని పర్యావరణం) ఆధారంగా ఒకే స్థలంలో వేర్వేరు అల్గారిథమ్లను ఉపయోగించాల్సిన సందర్భాల్లో ఇది ఉపయోగించబడుతుంది.
బలాలు:
- వివిధ అల్గారిథమ్ల అమలు యొక్క ఎన్క్యాప్సులేషన్, సిస్టమ్ వ్యాపార నియమాలలో సాధ్యమయ్యే మార్పుల నుండి స్వతంత్రంగా మారుతుంది;
- అన్ని అల్గారిథమ్లను ఒక ప్రామాణిక మార్గంలో కాల్ చేయడం;
- స్విచ్లు మరియు/లేదా షరతులతో కూడిన ప్రకటనలను ఉపయోగించడం లేదు.
ఈ నమూనా రాష్ట్ర నమూనాకు కొంతవరకు సమానంగా ఉంటుంది, కానీ ఇక్కడ ప్రాధాన్యత రాష్ట్రంపై కాదు, కానీ ప్రవర్తనపై ఉంది. మీ గేమ్లోని ఒక పాత్ర ఆయుధాలను మార్చగలదని చెప్పండి. ఆయుధాలను మార్చేటప్పుడు, మీరు ఈ ఆయుధం ఎలా పనిచేస్తుందో వివరించే వస్తువుకు సూచనను మార్చవచ్చు.
2.3 టెంప్లేట్ పద్ధతి
![టెంప్లేట్ పద్ధతి](https://cdn.codegym.cc/images/article/be4df3de-e667-4f4d-9ea7-d3b021879bb2/800.jpeg)
వియుక్త తరగతి (నైరూప్య తరగతి) - అల్గోరిథం యొక్క దశలను అమలు చేయడానికి వారసులలో భర్తీ చేయబడిన వియుక్త కార్యకలాపాలను నిర్వచిస్తుంది; అల్గోరిథం యొక్క అస్థిపంజరాన్ని నిర్వచించే టెంప్లేట్ పద్ధతిని అమలు చేస్తుంది. టెంప్లేట్ పద్ధతి వియుక్త తరగతిలో నిర్వచించబడిన భర్తీ మరియు ఇతర కార్యకలాపాలను పిలుస్తుంది.
కాంక్రీట్ తరగతి (కాంక్రీట్ తరగతి) - అమలు కోసం అవసరమైన విధంగా భర్తీ చేయబడిన కార్యకలాపాలను అమలు చేస్తుంది. అల్గోరిథం యొక్క మార్పులేని దశలు అబ్స్ట్రాక్ట్ క్లాస్లో నిర్వహించబడతాయని కాంక్రీట్ క్లాస్ ఊహిస్తుంది.
అవసరమైనప్పుడు ఈ నమూనా తరచుగా ఉపయోగించబడుతుంది:
- అల్గోరిథం యొక్క మార్పులేని భాగం యొక్క ఒకే ఉపయోగం, మారుతున్న భాగాన్ని వారసుల అభీష్టానుసారం వదిలివేయడం.
- నకిలీని నివారించడానికి అనేక తరగతులకు సాధారణ కోడ్ యొక్క స్థానికీకరణ మరియు ఐసోలేషన్.
- నిర్దిష్ట ప్రదేశాలలో మాత్రమే కోడ్ని పొడిగించడానికి వారసత్వాలను అనుమతించండి.
అవును, ఈ నమూనా ఒక జత యొక్క ఉపయోగాన్ని వివరిస్తుంది: ఒక వియుక్త తరగతి మరియు దాని అమలు.
2.4 బాధ్యతల గొలుసు
చైన్ ఆఫ్ రెస్పాన్సిబిలిటీ అనేది సిస్టమ్లో బాధ్యత స్థాయిలను నిర్వహించడానికి రూపొందించబడిన ప్రవర్తనా రూపకల్పన నమూనా.
![బాధ్యత గొలుసు](https://cdn.codegym.cc/images/article/41b55822-dc67-4db3-a0e8-b467bc9f320d/800.jpeg)
కింది పరిస్థితులలో ఉపయోగించడానికి టెంప్లేట్ సిఫార్సు చేయబడింది:
- అభివృద్ధి చెందిన వ్యవస్థలో ఒక నిర్దిష్ట రకం సందేశాలను ప్రాసెస్ చేయగల వస్తువుల సమూహం ఉంది;
- అన్ని సందేశాలు తప్పనిసరిగా కనీసం ఒక సిస్టమ్ ఆబ్జెక్ట్ ద్వారా ప్రాసెస్ చేయబడాలి;
- సిస్టమ్లోని సందేశాలు “మీరే ప్రాసెస్ చేయండి లేదా మరొకరికి పంపండి” పథకం ప్రకారం ప్రాసెస్ చేయబడతాయి, అంటే, కొన్ని సందేశాలు స్వీకరించబడిన స్థాయిలో ప్రాసెస్ చేయబడతాయి, మరికొన్ని మరొక స్థాయి వస్తువులకు ఫార్వార్డ్ చేయబడతాయి.
2.5 మెమెంటో
కీపర్ (మెమెంటో) అనేది ప్రవర్తనా రూపకల్పన నమూనా, ఇది ఎన్క్యాప్సులేషన్ను ఉల్లంఘించకుండా ఒక వస్తువు యొక్క అంతర్గత స్థితిని సరిచేయడానికి మరియు సేవ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, తద్వారా దానిని తర్వాత ఈ స్థితికి పునరుద్ధరించవచ్చు.
![సంరక్షకుడు (మెమెంటో)](https://cdn.codegym.cc/images/article/9b1d2d68-74b7-427c-8d7b-cf44640cf51f/800.jpeg)
గార్డియన్ నమూనా ఎప్పుడు ఉపయోగించబడుతుంది:
- తదుపరి పునరుద్ధరణ కోసం వస్తువు (లేదా దాని భాగం) యొక్క స్థితి యొక్క స్నాప్షాట్ను సేవ్ చేయడం అవసరం;
- వస్తువు యొక్క స్థితిని పొందడం కోసం ప్రత్యక్ష ఇంటర్ఫేస్ అమలు వివరాలను బహిర్గతం చేస్తుంది మరియు ఆబ్జెక్ట్ ఎన్క్యాప్సులేషన్ను విచ్ఛిన్నం చేస్తుంది.
GO TO FULL VERSION