பாலம் மாதிரி என்ன?
பாலம் அமைப்பு ஒரு கட்டமைப்பு வடிவமைப்பு வடிவமாகும். வேறு வார்த்தைகளில் கூறுவதானால், அதன் முக்கிய வேலை வகுப்புகள் மற்றும் பொருள்களிலிருந்து ஒரு முழுமையான கட்டமைப்பை உருவாக்குவதாகும். ஒன்று அல்லது அதற்கு மேற்பட்ட வகுப்புகளை தனித்தனி படிநிலைகளாகப் பிரிப்பதன் மூலம் ஒரு பாலம் இதைச் செய்கிறது: சுருக்கம் மற்றும் செயல்படுத்தல் . ஒரு படிநிலையில் செயல்பாட்டில் ஏற்படும் மாற்றம் மற்றொன்றில் மாற்றத்தை ஏற்படுத்தாது. அது எல்லாம் நன்றாக இருக்கிறது மற்றும் நல்லது, ஆனால் இந்த வரையறை மிகவும் விரிவானது மற்றும் மிக முக்கியமான கேள்விக்கு பதிலளிக்கவில்லை: "பாலம் முறை என்ன?" இதன் நடைமுறை பயன்பாட்டை நீங்கள் புரிந்துகொள்வது எளிதாக இருக்கும் என்று நினைக்கிறேன். எனவே இப்போதே, பிரிட்ஜ் பேட்டர்னுக்கான உன்னதமான காட்சியை உருவாக்குவோம். எங்களிடம் ஒரு சுருக்கShape
வர்க்கம் உள்ளது, இது பொதுவான வடிவியல் உருவத்தைக் குறிக்கிறது:
-
வடிவம்.ஜாவா
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
வர்க்கம் - சுத்திகரிக்கப்பட்ட சுருக்கம்
Triangle
மற்றும்Rectangle
வகுப்புகள் - செயல்படுத்துபவர் என்பது
Color
இடைமுகம் - ConcreteImplementor என்பது
BlackColor
,GreenColor
மற்றும்RedColor
வகுப்புகள்.
Shape
என்பது ஒரு சுருக்கம் - பல்வேறு வண்ணங்களுடன் வடிவங்களை நிரப்புவதை நிர்வகிப்பதற்கான ஒரு பொறிமுறையாகும், இது இடைமுகத்திற்கு Color
(செயல்படுத்துபவர்) பிரதிநிதித்துவம் செய்கிறது. மற்றும் Triangle
வகுப்புகள் Rectangle
என்பது வகுப்பினால் கிடைக்கும் பொறிமுறையைப் பயன்படுத்தும் உறுதியான வகுப்புகள் Shape
. BlackColor
, GreenColor
மற்றும் RedColor
செயல்படுத்தல் படிநிலையில் உறுதியான செயலாக்கங்கள்.
பாலம் வடிவத்தை எங்கே பயன்படுத்துவது
இந்த முறையைப் பயன்படுத்துவதன் மிகப்பெரிய நன்மை என்னவென்றால், ஒரு படிநிலையில் மற்றொன்றின் தர்க்கத்தை உடைக்காமல் செயல்பாட்டு வகுப்புகளில் மாற்றங்களைச் செய்யலாம். மேலும், இந்த அணுகுமுறை வகுப்புகளுக்கு இடையில் இணைப்பதைக் குறைக்க உதவுகிறது. இந்த முறையைப் பயன்படுத்தும் போது முக்கியத் தேவை "வழிமுறைகளைப் பின்பற்றவும்" - அவற்றில் எதையும் புறக்கணிக்காதீர்கள்! அந்த முடிவுக்கு, நீங்கள் கண்டிப்பாக பாலம் வடிவத்தைப் பயன்படுத்த வேண்டிய சூழ்நிலைகளைக் கண்டுபிடிப்போம்:-
இரண்டு கருத்துகளின் (எ.கா. வடிவங்கள் மற்றும் வண்ணங்கள்) கலவையின் அடிப்படையில் நீங்கள் நிறுவனங்களின் எண்ணிக்கையை விரிவாக்க வேண்டும் என்றால்.
-
ஒற்றை-பொறுப்புக் கொள்கையைப் பூர்த்தி செய்யாத ஒரு பெரிய வகுப்பை குறுகிய செயல்பாட்டைக் கொண்ட சிறிய வகுப்புகளாகப் பிரிக்க விரும்பினால்.
-
நிரல் இயங்கும் போது சில நிறுவனங்களின் தர்க்கத்தில் மாற்றங்களைச் செய்வது அவசியமானால்.
-
வகுப்பின் அல்லது நூலகத்தின் வாடிக்கையாளர்களிடமிருந்து செயல்படுத்தலை மறைக்க வேண்டிய அவசியம் ஏற்பட்டால்.
வடிவத்தின் நன்மை தீமைகள்
மற்ற வடிவங்களைப் போலவே, ஒரு பாலம் நன்மைகள் மற்றும் தீமைகள் இரண்டையும் கொண்டுள்ளது. பாலம் வடிவத்தின் நன்மைகள்:- இது குறியீட்டின் அளவை மேம்படுத்துகிறது - நிரலின் மற்றொரு பகுதியில் எதையாவது உடைக்கும் பயம் இல்லாமல் செயல்பாட்டைச் சேர்க்கலாம்.
- இரண்டு கருத்துகளின் (உதாரணமாக, வடிவங்கள் மற்றும் வண்ணங்கள்) கலவையின் அடிப்படையில் நிறுவனங்களின் எண்ணிக்கை இருக்கும் போது இது துணைப்பிரிவுகளின் எண்ணிக்கையைக் குறைக்கிறது.
- இது இரண்டு தனித்தனி படிநிலைகளில் தனித்தனியாக வேலை செய்வதை சாத்தியமாக்குகிறது - சுருக்கம் மற்றும் செயல்படுத்தல். இரண்டு வெவ்வேறு டெவலப்பர்கள் ஒருவருக்கொருவர் குறியீட்டின் விவரங்களை ஆராயாமல் மாற்றங்களைச் செய்யலாம்.
- இது வகுப்புகளுக்கு இடையே உள்ள இணைப்பைக் குறைக்கிறது - இரண்டு வகுப்புகளும் இணைந்திருக்கும் ஒரே இடம் பாலம் (அதாவது புலம்
Color color
).
- குறிப்பிட்ட சூழ்நிலை மற்றும் திட்டத்தின் ஒட்டுமொத்த கட்டமைப்பைப் பொறுத்து, இது ஒரு நிரலின் செயல்திறனை எதிர்மறையாக பாதிக்கலாம் (உதாரணமாக, நீங்கள் அதிக பொருட்களை துவக்க வேண்டும் என்றால்).
- இரண்டு வகுப்புகளுக்கு இடையில் மாற வேண்டியதன் காரணமாக இது குறியீட்டை குறைவாக படிக்க வைக்கிறது.
GO TO FULL VERSION