7 అత్యంత ముఖ్యమైన సాఫ్ట్‌వేర్ డిజైన్ పద్ధతులు

సాఫ్ట్‌వేర్ డిజైన్ సరళి అనే అంశంపై సమగ్ర లోతైన డైవ్ కోసం, సాఫ్ట్‌వేర్ డిజైన్ సరళిని చూడండి: డెవలపర్‌ల కోసం ఉత్తమ పద్ధతులు, సి.హెచ్. నెట్‌ఫ్లిక్స్, మైక్రోసాఫ్ట్ మరియు ఒరాకిల్‌లో పలు సంవత్సరాల అనుభవం ఉన్న అనుభవజ్ఞుడైన సాఫ్ట్‌వేర్ ఇంజనీర్ అఫ్జల్. దిగువ చాలా భాగం అతని కోర్సు నుండి సంగ్రహించబడింది.

డిజైన్ పద్ధతులు ఎందుకు?

ఇటీవలి కాలంలో ప్రోగ్రామింగ్ ప్రపంచంలో డిజైన్ సరళి కొన్ని వివాదాలకు దారితీసింది, ఎక్కువగా వారు గ్రహించిన ‘అధిక వినియోగం’ కోడ్‌కు దారి తీయడం వల్ల అర్థం చేసుకోవడం మరియు నిర్వహించడం కష్టం.

డిజైన్ కోడ్‌లు మీ కోడ్‌కి అడ్డంగా, ‘ఒక-పరిమాణానికి సరిపోయే-అన్నీ’ పద్ధతిలో వర్తించే సత్వరమార్గాలను కలిసి హ్యాక్ చేయకూడదని అర్థం చేసుకోవాలి. సాఫ్ట్‌వేర్ ఇంజనీరింగ్‌లో నిజమైన సమస్య పరిష్కార సామర్థ్యానికి చివరికి ప్రత్యామ్నాయం లేదు.

ఏది ఏమయినప్పటికీ, సరైన పరిస్థితులలో మరియు సరైన కారణాల కోసం ఉపయోగించినట్లయితే డిజైన్ పద్ధతులు చాలా ఉపయోగకరంగా ఉంటాయి. వ్యూహాత్మకంగా ఉపయోగించినప్పుడు, వారు ఇప్పటికే ప్రోగ్రామర్‌ను మరింత సమర్థవంతంగా తయారు చేయగలరు, సామెత చక్రంను తిరిగి ఆవిష్కరించకుండా ఉండటానికి వీలు కల్పిస్తుంది, బదులుగా ఇతరులు ఇప్పటికే శుద్ధి చేసిన పద్ధతులను ఉపయోగిస్తారు. ఇతరులతో చర్చించేటప్పుడు లేదా పెద్ద జట్లలో కోడ్‌ను నిర్వహించేటప్పుడు పదేపదే సమస్యలు మరియు పరిష్కారాలను సంభావితం చేయడానికి ఇవి ఉపయోగకరమైన సాధారణ భాషను కూడా అందిస్తాయి.

చెప్పబడుతున్నది, ప్రతి నమూనా వెనుక ఎలా మరియు ఎందుకు డెవలపర్ అర్థం చేసుకునేలా చూడటం ఒక ముఖ్యమైన మినహాయింపు.

మరింత శ్రమ లేకుండా (ప్రాముఖ్యత యొక్క సాధారణ క్రమంలో, చాలా నుండి కనీసం):

అత్యంత ముఖ్యమైన డిజైన్ పద్ధతులు

  1. సింగిల్టన్

తరగతి సృష్టిని ఒకే వస్తువుకు పరిమితం చేయడానికి సింగిల్టన్ నమూనా ఉపయోగించబడుతుంది. వ్యవస్థ అంతటా చర్యలను సమన్వయం చేయడానికి ఒక (మరియు ఒకే ఒక్క) వస్తువు అవసరమైనప్పుడు ఇది ప్రయోజనకరంగా ఉంటుంది. కాష్లు, థ్రెడ్ కొలనులు మరియు రిజిస్ట్రీలతో సహా తరగతి యొక్క ఒకే ఒక ఉదాహరణ మాత్రమే ఉండటానికి అనేక ఉదాహరణలు ఉన్నాయి.

తరగతి యొక్క వస్తువును ప్రారంభించడం చాలా చిన్నది - కాని ఒక వస్తువు మాత్రమే సృష్టించబడుతుందని మేము ఎలా నిర్ధారిస్తాము? సింగిల్‌టన్‌గా మనం నిర్వచించదలిచిన తరగతికి కన్స్ట్రక్టర్‌ను ‘ప్రైవేట్’ చేయడమే సమాధానం. ఆ విధంగా, తరగతి సభ్యులు మాత్రమే ప్రైవేట్ కన్స్ట్రక్టర్‌ను యాక్సెస్ చేయగలరు మరియు మరెవరూ ఉండరు.

ముఖ్యమైన పరిశీలన: కన్స్ట్రక్టర్‌ను ప్రైవేట్‌కు బదులుగా రక్షించటం ద్వారా సింగిల్‌టన్‌ను సబ్‌క్లాస్ చేయడం సాధ్యపడుతుంది. కొన్ని పరిస్థితులలో ఇది అనుకూలంగా ఉండవచ్చు. ఈ దృశ్యాలలో తీసుకున్న ఒక విధానం ఏమిటంటే, సబ్‌క్లాస్‌ల సింగిల్‌టన్ల రిజిస్టర్‌ను సృష్టించడం మరియు getInstance పద్ధతి ఒక పరామితిలో తీసుకోవచ్చు లేదా కావలసిన సింగిల్‌టన్‌ను తిరిగి ఇవ్వడానికి పర్యావరణ వేరియబుల్‌ను ఉపయోగించవచ్చు. రిజిస్ట్రీ అప్పుడు సింగిల్టన్ వస్తువులకు స్ట్రింగ్ పేర్ల మ్యాపింగ్‌ను నిర్వహిస్తుంది, వీటిని అవసరమైన విధంగా యాక్సెస్ చేయవచ్చు.

2. ఫ్యాక్టరీ విధానం

ఒక సాధారణ కర్మాగారం వస్తువులను ఉత్పత్తి చేస్తుంది; సాఫ్ట్‌వేర్ ఫ్యాక్టరీ వస్తువులను ఉత్పత్తి చేస్తుంది. మరియు అది మాత్రమే కాదు - సృష్టించవలసిన వస్తువు యొక్క ఖచ్చితమైన తరగతిని పేర్కొనకుండా ఇది చేస్తుంది. దీనిని నెరవేర్చడానికి, కన్స్ట్రక్టర్‌ను పిలవడానికి బదులుగా ఫ్యాక్టరీ పద్ధతిని పిలవడం ద్వారా వస్తువులు సృష్టించబడతాయి.

సాధారణంగా, జావాలో ఆబ్జెక్ట్ సృష్టి ఇలా జరుగుతుంది:

SomeClass someClassObject = క్రొత్త SomeClass ();

పై విధానంలో సమస్య ఏమిటంటే, సోమ్‌క్లాస్ యొక్క వస్తువును ఉపయోగించే కోడ్, అకస్మాత్తుగా ఇప్పుడు సోమ్‌క్లాస్ యొక్క కాంక్రీట్ అమలుపై ఆధారపడి ఉంటుంది. వస్తువులను సృష్టించడానికి క్రొత్తదాన్ని ఉపయోగించడంలో తప్పు లేదు, కాని ఇది మా కోడ్‌ను కాంక్రీట్ ఇంప్లిమెంటేషన్ క్లాస్‌కు పటిష్టంగా కలపడం యొక్క సామానుతో వస్తుంది, ఇది అప్పుడప్పుడు సమస్యాత్మకంగా ఉంటుంది.

3. వ్యూహం

వ్యూహాత్మక నమూనా సంగ్రహణ కింద సంబంధిత అల్గారిథమ్‌లను సమూహపరచడానికి అనుమతిస్తుంది, ఇది క్లయింట్‌ను సవరించకుండా ఒక అల్గోరిథం లేదా పాలసీని మరొకదానికి మార్చడానికి అనుమతిస్తుంది. ఒకే అల్గోరిథంను నేరుగా అమలు చేయడానికి బదులుగా, కోడ్ ఏ అల్గోరిథంల సమూహాన్ని అమలు చేయాలో పేర్కొనే రన్‌టైమ్ సూచనలను పొందుతుంది.

4. పరిశీలకుడు

ఈ నమూనా వస్తువుల మధ్య ఒకటి నుండి అనేక ఆధారపడటం, తద్వారా ఒక వస్తువు స్థితిని మార్చినప్పుడు, దానిపై ఆధారపడిన వారందరికీ తెలియజేయబడుతుంది. ఇది సాధారణంగా వారి పద్ధతుల్లో ఒకదానికి కాల్ చేయడం ద్వారా జరుగుతుంది.

సరళత కొరకు, మీరు ట్విట్టర్‌లో ఒకరిని అనుసరిస్తే ఏమి జరుగుతుందో ఆలోచించండి. మీరు తప్పనిసరిగా మీరు అనుసరించిన వ్యక్తి (విషయం) యొక్క ట్వీట్ నవీకరణలను మీకు (పరిశీలకుడు) పంపమని ట్విట్టర్‌ను అడుగుతున్నారు. ఈ నమూనాలో ఇద్దరు నటులు ఉంటారు, నవీకరణలపై ఆసక్తి ఉన్న పరిశీలకుడు మరియు నవీకరణలను రూపొందించే విషయం.

ఒక విషయం చాలా మంది పరిశీలకులను కలిగి ఉంటుంది మరియు ఇది చాలా సంబంధాలకు ఒకటి. అయినప్పటికీ, ఒక పరిశీలకుడు ఇతర విషయాల నుండి నవీకరణలకు చందా పొందటానికి ఉచితం. మీరు ఫేస్బుక్ పేజీ నుండి న్యూస్ ఫీడ్కు చందా పొందవచ్చు, ఇది విషయం అవుతుంది మరియు పేజీకి క్రొత్త పోస్ట్ ఉన్నప్పుడల్లా, చందాదారుడు క్రొత్త పోస్ట్ను చూస్తారు.

ముఖ్య పరిశీలన: అనేక విషయాలు మరియు కొంతమంది పరిశీలకుల విషయంలో, ప్రతి విషయం దాని పరిశీలకులను విడిగా నిల్వ చేస్తే, ఇది నిల్వ ఖర్చులను పెంచుతుంది, ఎందుకంటే కొన్ని విషయాలు ఒకే పరిశీలకుడిని అనేకసార్లు నిల్వ చేస్తాయి.

5. బిల్డర్

పేరు సూచించినట్లుగా, వస్తువులను నిర్మించడానికి బిల్డర్ నమూనా ఉపయోగించబడుతుంది. కొన్నిసార్లు, మేము సృష్టించిన వస్తువులు సంక్లిష్టంగా ఉంటాయి, అనేక ఉప వస్తువులతో తయారవుతాయి లేదా విస్తృతమైన నిర్మాణ ప్రక్రియ అవసరం. సంక్లిష్ట రకాలను సృష్టించే వ్యాయామం బిల్డర్ నమూనాను ఉపయోగించడం ద్వారా సరళీకృతం చేయవచ్చు. మిశ్రమ లేదా మొత్తం వస్తువు అంటే బిల్డర్ సాధారణంగా నిర్మిస్తాడు.

ముఖ్య పరిశీలన: బిల్డర్ నమూనా ‘నైరూప్య ఫ్యాక్టరీ’ నమూనాతో సమానమైనదిగా అనిపించవచ్చు, కాని ఒక వ్యత్యాసం ఏమిటంటే, బిల్డర్ నమూనా దశల వారీగా ఒక వస్తువును సృష్టిస్తుంది, అయితే నైరూప్య ఫ్యాక్టరీ నమూనా వస్తువును ఒకేసారి తిరిగి ఇస్తుంది.

6. అడాప్టర్

ఇది ఒక తరగతి యొక్క ఇంటర్‌ఫేస్‌ను మరొక తరగతికి మార్చడం ద్వారా అననుకూల తరగతులు కలిసి పనిచేయడానికి అనుమతిస్తుంది. ఇది ఒక విధమైన అనువాదకుడిగా ఆలోచించండి: ఉమ్మడి భాష మాట్లాడని ఇద్దరు దేశాధినేతలు కలిసినప్పుడు, సాధారణంగా ఒక వ్యాఖ్యాత ఇద్దరి మధ్య కూర్చుని సంభాషణను అనువదిస్తాడు, తద్వారా కమ్యూనికేషన్‌ను ప్రారంభిస్తుంది.

మీకు రెండు అనువర్తనాలు ఉంటే, ఒకటి అవుట్పుట్ను XML గా ఉమ్మివేయడం, మరొకటి JSON ఇన్పుట్ అవసరం, అప్పుడు అవి సజావుగా పని చేయడానికి మీకు రెండింటి మధ్య అడాప్టర్ అవసరం.

7. రాష్ట్రం

రాష్ట్ర నమూనా ఒక యంత్రం ఉండగల వివిధ రాష్ట్రాలను కలుపుతుంది మరియు ఒక వస్తువు దాని అంతర్గత స్థితి మారినప్పుడు దాని ప్రవర్తనను మార్చడానికి అనుమతిస్తుంది. యంత్రం లేదా సందర్భం, దీనిని నమూనా-మాట్లాడేటప్పుడు పిలుస్తారు, దానిపై వేర్వేరు రాష్ట్రాల్లోకి నడిపించే చర్యలు తీసుకోవచ్చు. నమూనా ఉపయోగించకుండా, కోడ్ సరళమైనది మరియు if-else షరతులతో నిండి ఉంటుంది.

నేర్చుకోవడం కొనసాగించాలనుకుంటున్నారా?

సాఫ్ట్‌వేర్ డిజైన్ సరళితో: డెవలపర్‌ల కోసం ఉత్తమ పద్ధతులు మీరు సిద్ధాంతాన్ని చదవడం కంటే ఎక్కువ చేయటానికి అవకాశం ఉంటుంది. మీరు నిజ సమస్యలపై లోతుగా డైవ్ చేయగలరు మరియు నిజ జీవిత కోడ్ ఉదాహరణలతో ఆచరణాత్మక పరిష్కారాలను అర్థం చేసుకోగలరు.

ఈ కోర్సు గ్యాంగ్ ఆఫ్ ఫోర్ యొక్క ప్రసిద్ధ పుస్తకంపై ఆధారపడింది, కాని ఇంటరాక్టివ్, సులభంగా జీర్ణమయ్యే ఆకృతిలో ప్రదర్శించబడుతుంది. మీరు పుస్తకం నుండి 23 ప్రసిద్ధ డిజైన్ నమూనాలను ఇంటరాక్టివ్‌గా నేర్చుకుంటారు, 3 కీ డిజైన్ నమూనా రకాలను (సృజనాత్మక, నిర్మాణాత్మక మరియు ప్రవర్తనా) సరైన అనువర్తనాలను నేర్చుకుంటారు మరియు ఈ డిజైన్ నమూనాలను మీ స్వంత ప్రాజెక్టులలో చేర్చడం నేర్చుకుంటారు.

ఇప్పుడే చూడండి.

వాస్తవానికి నవంబర్ 7, 2018 న blog.educative.io లో ప్రచురించబడింది.