వంతెన నమూనా ఏమిటి?
వంతెన నమూనా నిర్మాణ నమూనా నమూనా. మరో మాటలో చెప్పాలంటే, తరగతులు మరియు వస్తువుల నుండి పూర్తి స్థాయి నిర్మాణాన్ని సృష్టించడం దీని ప్రధాన పని. ఒక వంతెన దీన్ని ఒకటి లేదా అంతకంటే ఎక్కువ తరగతులను ప్రత్యేక సోపానక్రమాలుగా విభజించడం ద్వారా చేస్తుంది: సంగ్రహణ మరియు అమలు . ఒక సోపానక్రమంలో కార్యాచరణలో మార్పు మరొక దానిలో మార్పును కలిగి ఉండదు. అదంతా మంచిది మరియు మంచిది, కానీ ఈ నిర్వచనం చాలా విస్తృతమైనది మరియు అతి ముఖ్యమైన ప్రశ్నకు సమాధానం ఇవ్వదు: "వంతెన నమూనా ఏమిటి?" దాని ఆచరణాత్మక అనువర్తనాన్ని అర్థం చేసుకోవడం మీకు సులభంగా ఉంటుందని నేను భావిస్తున్నాను. కాబట్టి వెంటనే, వంతెన నమూనా కోసం ఒక క్లాసిక్ దృష్టాంతాన్ని క్రియేట్ చేద్దాం.Shape
మేము సాధారణ రేఖాగణిత బొమ్మను సూచించే వియుక్త తరగతిని కలిగి ఉన్నాము :
-
Shape.java
public abstract class Shape { public abstract void draw(); }
మేము త్రిభుజాలు మరియు దీర్ఘ చతురస్రాలు వంటి ఆకృతులను జోడించాలని నిర్ణయించుకున్నప్పుడు, మేము వాటిని తరగతికి వారసత్వంగా అందజేస్తాము
Shape
: -
Rectangle.java:
public class Rectangle extends Shape { @Override public void draw() { System.out.println("Drawing rectangle"); } }
-
Triangle.java:
public class Triangle extends Shape { @Override public void draw() { System.out.println("Drawing triangle"); } }
draw()
పద్ధతి యొక్క కార్యాచరణ ఈ రంగుపై ఆధారపడి ఉంటుంది. పద్ధతి యొక్క విభిన్న అమలులను కలిగి ఉండటానికి draw()
, మేము ప్రతి ఆకృతి-రంగు కలయిక కోసం ఒక తరగతిని సృష్టించాలి. మనకు మూడు రంగులు ఉంటే, మనకు ఆరు తరగతులు అవసరం: TriangleBlack
, TriangleGreen
, TriangleRed
, RectangleBlack
, RectangleGreen
మరియు RectangleRed
. ఆరు తరగతులు అంత పెద్ద సమస్య కాదు. కానీ! మేము కొత్త ఆకారం లేదా రంగును జోడించాల్సిన అవసరం ఉంటే, తరగతుల సంఖ్య విపరీతంగా పెరుగుతుంది. ఈ పరిస్థితి నుండి ఎలా బయటపడాలి? ఫీల్డ్లో రంగును నిల్వ చేయడం మరియు షరతులతో కూడిన స్టేట్మెంట్లను ఉపయోగించి అన్ని ఎంపికలను లెక్కించడం ఉత్తమ పరిష్కారం కాదు. రంగును ప్రత్యేక ఇంటర్ఫేస్కి తరలించడం మంచి పరిష్కారం. Color
పూర్తి చేయడం కంటే త్వరగా చెప్పలేము: మూడు అమలులతో ఇంటర్ఫేస్ను సృష్టిద్దాం : BlackColor
, GreenColor
మరియు RedColor
:
-
Color.java:
public interface Color { void fillColor(); }
-
BlackColor.java:
public class BlackColor implements Color { @Override public void fillColor() { System.out.println("Filling in black color"); } }
-
GreenColor.java
public class GreenColor implements Color { @Override public void fillColor() { System.out.println("Filling in green color"); } }
-
RedColor.java
public class RedColor implements Color { @Override public void fillColor() { System.out.println("Filling in red color"); } }
ఇప్పుడు మేము
Color
తరగతికి ఫీల్డ్ని జోడిస్తాముShape
. మేము దాని విలువను కన్స్ట్రక్టర్లో పొందుతాము. -
Shape.java:
public abstract class Shape { protected Color color; public Shape(Color color) { this.color = color; } public abstract void draw(); }
color
మేము అమలులో వేరియబుల్ని ఉపయోగిస్తాముShape
. ఆకారాలు ఇప్పుడు ఇంటర్ఫేస్ యొక్క కార్యాచరణను ఉపయోగించగలవని దీని అర్థంColor
. -
దీర్ఘచతురస్రం.జావా
public class Rectangle extends Shape { public Rectangle(Color color) { super(color); } @Override public void draw() { System.out.println("Drawing rectangle"); color.fillColor(); } }
Color color
అనేది రెండు వేర్వేరు తరగతి సోపానక్రమాలను కలిపే వంతెన.
వంతెనను ఎలా నిర్మించాలి: సంగ్రహణ మరియు అమలు
వంతెన నమూనాను వర్ణించే తరగతి రేఖాచిత్రాన్ని చూద్దాం:
- సంగ్రహణ అనేది
Shape
తరగతి - Refined Abstraction అనేది
Triangle
మరియుRectangle
తరగతులు - ఇంప్లిమెంటర్ అనేది
Color
ఇంటర్ఫేస్ - కాంక్రీట్ ఇంప్లిమెంటర్ అనేది
BlackColor
,GreenColor
మరియుRedColor
తరగతులు.
Shape
అనేది ఒక నైరూప్యత — వివిధ రంగులతో ఆకారాలను పూరించడాన్ని నిర్వహించడానికి ఒక మెకానిజం, ఇది ఇంటర్ఫేస్కు Color
(ఇంప్లిమెంటర్) నియోగిస్తుంది. మరియు తరగతులు క్లాస్ ద్వారా అందుబాటులోకి Triangle
తెచ్చిన Rectangle
మెకానిజంను ఉపయోగించే కాంక్రీట్ తరగతులు Shape
. BlackColor
, GreenColor
మరియు RedColor
అమలు సోపానక్రమంలో ఖచ్చితమైన అమలులు.
వంతెన నమూనాను ఎక్కడ ఉపయోగించాలి
ఈ నమూనాను ఉపయోగించడం యొక్క భారీ ప్రయోజనం ఏమిటంటే, మీరు ఒక సోపానక్రమంలో మరొకదాని యొక్క లాజిక్ను విచ్ఛిన్నం చేయకుండా ఫంక్షనల్ తరగతులకు మార్పులు చేయవచ్చు. అలాగే, ఈ విధానం తరగతుల మధ్య కలపడం తగ్గించడానికి సహాయపడుతుంది. ఈ నమూనాను ఉపయోగిస్తున్నప్పుడు ప్రధాన అవసరం "సూచనలను అనుసరించండి" — వాటిలో దేనినీ విస్మరించవద్దు! అందుకోసం, మీరు ఖచ్చితంగా వంతెన నమూనాను ఉపయోగించాల్సిన పరిస్థితులను గుర్తించండి:-
మీరు రెండు భావనల (ఉదా ఆకారాలు మరియు రంగులు) కలయికల ఆధారంగా ఎంటిటీల సంఖ్యను విస్తరించాల్సిన అవసరం ఉంటే.
-
మీరు ఒకే-బాధ్యత సూత్రాన్ని పాటించని పెద్ద తరగతిని ఇరుకైన కార్యాచరణ కలిగిన చిన్న తరగతులుగా విభజించాలనుకుంటే.
-
ప్రోగ్రామ్ నడుస్తున్నప్పుడు నిర్దిష్ట ఎంటిటీల లాజిక్లో మార్పులు చేయాల్సిన అవసరం ఉంటే.
-
తరగతి లేదా లైబ్రరీ క్లయింట్ల నుండి అమలును దాచాల్సిన అవసరం ఉంటే.
నమూనా యొక్క లాభాలు మరియు నష్టాలు
ఇతర నమూనాల వలె, వంతెనకు ప్రయోజనాలు మరియు అప్రయోజనాలు రెండూ ఉన్నాయి. వంతెన నమూనా యొక్క ప్రయోజనాలు:- ఇది కోడ్ యొక్క స్కేలబిలిటీని మెరుగుపరుస్తుంది - ప్రోగ్రామ్లోని మరొక భాగంలో ఏదైనా విచ్ఛిన్నం అవుతుందనే భయం లేకుండా మీరు కార్యాచరణను జోడించవచ్చు.
- ఎంటిటీల సంఖ్య లేకపోతే రెండు భావనల (ఉదాహరణకు, ఆకారాలు మరియు రంగులు) కలయికపై ఆధారపడినప్పుడు ఇది సబ్క్లాస్ల సంఖ్యను తగ్గిస్తుంది.
- ఇది రెండు వేర్వేరు సోపానక్రమాలపై విడిగా పని చేయడం సాధ్యపడుతుంది - సంగ్రహణ మరియు అమలు. ఇద్దరు వేర్వేరు డెవలపర్లు ఒకరి కోడ్ వివరాలను మరొకరు లోతుగా పరిశోధించకుండా మార్పులు చేయవచ్చు.
- ఇది తరగతుల మధ్య కలపడాన్ని తగ్గిస్తుంది - రెండు తరగతులు కలిసి ఉండే ఏకైక ప్రదేశం వంతెన (అంటే ఫీల్డ్
Color color
).
- నిర్దిష్ట పరిస్థితి మరియు ప్రాజెక్ట్ యొక్క మొత్తం నిర్మాణంపై ఆధారపడి, ఇది ప్రోగ్రామ్ పనితీరును ప్రతికూలంగా ప్రభావితం చేస్తుంది (ఉదాహరణకు, మీరు మరిన్ని వస్తువులను ప్రారంభించాల్సిన అవసరం ఉంటే).
- రెండు తరగతుల మధ్య మారవలసిన అవసరం కారణంగా ఇది కోడ్ను తక్కువ చదవగలిగేలా చేస్తుంది.
GO TO FULL VERSION