CodeGym /జావా కోర్సు /మాడ్యూల్ 3 /ఉత్పాదక నమూనాలు, పార్ట్ 2

ఉత్పాదక నమూనాలు, పార్ట్ 2

మాడ్యూల్ 3
స్థాయి , పాఠం
అందుబాటులో ఉంది

4.1 బిల్డర్

బిల్డర్ అనేది ఉత్పాదక రూపకల్పన నమూనా, ఇది మిశ్రమ వస్తువును రూపొందించడానికి ఒక మార్గాన్ని అందిస్తుంది.

సంక్లిష్టమైన వస్తువు యొక్క నిర్మాణాన్ని దాని ప్రాతినిధ్యం నుండి వేరు చేస్తుంది, తద్వారా అదే నిర్మాణ ప్రక్రియ వివిధ ప్రాతినిధ్యాలను కలిగిస్తుంది.

బిల్డర్

బలాలు:

  • ఉత్పత్తి యొక్క అంతర్గత ప్రాతినిధ్యాన్ని మార్చడానికి మిమ్మల్ని అనుమతిస్తుంది;
  • నిర్మాణం మరియు ప్రదర్శనను అమలు చేసే కోడ్‌ను వేరు చేస్తుంది;
  • డిజైన్ ప్రక్రియపై చక్కటి నియంత్రణను ఇస్తుంది.

బలహీన భుజాలు:

  • సంక్లిష్టమైన వస్తువును సృష్టించే అల్గోరిథం వస్తువు ఏ భాగాలను కలిగి ఉంటుంది మరియు అవి ఎలా కలిసిపోతాయి అనే దానిపై ఆధారపడి ఉండకూడదు;
  • నిర్మాణ ప్రక్రియ తప్పనిసరిగా నిర్మించబడుతున్న వస్తువు యొక్క విభిన్న ప్రాతినిధ్యాలను అందించాలి.

HttpRequest తరగతికి మంచి ఉదాహరణ HttpRequest తరగతి, ఇది HttpRequest తరగతికి సంబంధించిన ఉదాహరణలను సృష్టించడానికి మరియు అవి చెల్లుబాటు అయ్యేవని నిర్ధారించడానికి ఉపవర్గం HttpRequest.Builderని కలిగి ఉంటుంది.

4.2 సోమరితనం ప్రారంభించడం

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

అందువలన, ప్రారంభించడం "డిమాండ్పై" నిర్వహించబడుతుంది మరియు ముందుగానే కాదు. ఇదే విధమైన ఆలోచన వివిధ రంగాలలో అనువర్తనాన్ని కనుగొంటుంది: ఉదాహరణకు, ఆన్-ది-ఫ్లై కంపైలేషన్ మరియు జస్ట్-ఇన్-టైమ్ లాజిస్టిక్స్ కాన్సెప్ట్.

సోమరితనం ప్రారంభించడం

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

బలాలు:

  • ఇది నిజంగా అవసరమైనప్పుడు మాత్రమే ప్రారంభించడం జరుగుతుంది;
  • అప్లికేషన్ యొక్క ప్రారంభ ప్రారంభించడం వేగవంతం చేయబడింది: వాయిదా వేయగల ప్రతిదీ వాయిదా వేయబడుతుంది.

బలహీన భుజాలు:

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

web.xmlని వ్రాసేటప్పుడు మీరు అక్కడ సర్వ్లెట్ల ప్రారంభ క్రమాన్ని ఎలా పేర్కొనవచ్చో గుర్తుందా? ఇది ఖచ్చితంగా సోమరితనం లోడింగ్ యొక్క ఫలితం. టామ్‌క్యాట్ సర్వ్‌లెట్ ఆబ్జెక్ట్‌లను మొదటిసారి యాక్సెస్ చేసినప్పుడు వాటిని సృష్టిస్తుంది.

4.3 ఆబ్జెక్ట్ పూల్

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

వస్తువు కొలను

ఆబ్జెక్ట్ పూలింగ్ అనేది పని ప్రారంభంలో ఒక వస్తువును సృష్టించినప్పుడు మరియు చివరికి దానిని నాశనం చేయడం ఖరీదైనది అయినప్పుడు పనితీరును మెరుగుపరచడానికి ఉపయోగించబడుతుంది. వస్తువులు తరచుగా సృష్టించబడినప్పుడు మరియు నాశనం చేయబడినప్పుడు పనితీరు మెరుగుదల ప్రత్యేకంగా గుర్తించదగినది, కానీ వాటిలో తక్కువ సంఖ్యలో మాత్రమే ఒకే సమయంలో ఉన్నాయి.

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

మీకు గుర్తున్నట్లుగా, టామ్‌క్యాట్ ప్రతి అభ్యర్థనను ప్రత్యేక థ్రెడ్‌లో అమలు చేస్తుంది. కానీ థ్రెడ్‌లు ప్రతిసారీ కొత్తగా సృష్టించబడవు, కానీ థ్రెడ్ పూల్‌లో నిల్వ చేయబడతాయి. ఇది అభ్యర్థనలను వేగంగా అమలు చేయడానికి అనుమతిస్తుంది: థ్రెడ్ అవసరమైనప్పుడు, అది కేవలం పూల్ నుండి తీసుకోబడుతుంది. మార్గం ద్వారా, ప్రశ్న: మీరు నడుస్తున్న థ్రెడ్‌ను పూల్‌లోకి ఎలా ఉంచుతారు మరియు పూల్ నుండి ఎలా తీసుకుంటారు?

వ్యాఖ్యలు
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION