CodeGym /Java Blog /சீரற்ற /பாலம் வடிவமைப்பு முறை
John Squirrels
நிலை 41
San Francisco

பாலம் வடிவமைப்பு முறை

சீரற்ற குழுவில் வெளியிடப்பட்டது
வணக்கம்! நாங்கள் இப்போது ஒரு விரிவான மற்றும் மிக முக்கியமான பயனுள்ள தலைப்பை ஆராய்வோம்: வடிவமைப்பு வடிவங்கள். இன்று பாலம் முறை பற்றி பேசலாம். மற்ற வடிவங்களைப் போலவே, மென்பொருள் கட்டமைப்பை வடிவமைக்கும் போது டெவலப்பர் சந்திக்கும் பொதுவான சிக்கல்களைத் தீர்க்க பிரிட்ஜ் பேட்டர்ன் உதவுகிறது. இன்று இந்த வடிவத்தின் அம்சங்களைப் படித்து அதை எவ்வாறு பயன்படுத்துவது என்பதைக் கண்டுபிடிப்போம்.

பாலம் மாதிரி என்ன?

பாலம் அமைப்பு ஒரு கட்டமைப்பு வடிவமைப்பு வடிவமாகும். வேறு வார்த்தைகளில் கூறுவதானால், அதன் முக்கிய வேலை வகுப்புகள் மற்றும் பொருள்களிலிருந்து ஒரு முழுமையான கட்டமைப்பை உருவாக்குவதாகும். ஒன்று அல்லது அதற்கு மேற்பட்ட வகுப்புகளை தனித்தனி படிநிலைகளாகப் பிரிப்பதன் மூலம் ஒரு பாலம் இதைச் செய்கிறது: சுருக்கம் மற்றும் செயல்படுத்தல் . ஒரு படிநிலையில் செயல்பாட்டில் ஏற்படும் மாற்றம் மற்றொன்றில் மாற்றத்தை ஏற்படுத்தாது. அது எல்லாம் நன்றாக இருக்கிறது மற்றும் நல்லது, ஆனால் இந்த வரையறை மிகவும் விரிவானது மற்றும் மிக முக்கியமான கேள்விக்கு பதிலளிக்கவில்லை: "பாலம் முறை என்ன?" இதன் நடைமுறை பயன்பாட்டை நீங்கள் புரிந்துகொள்வது எளிதாக இருக்கும் என்று நினைக்கிறேன். எனவே இப்போதே, பிரிட்ஜ் பேட்டர்னுக்கான உன்னதமான காட்சியை உருவாக்குவோம். எங்களிடம் ஒரு சுருக்க 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, மற்றும் . ஆறு வகுப்புகள் அவ்வளவு பெரிய பிரச்சனை இல்லை. ஆனாலும்! நாம் ஒரு புதிய வடிவம் அல்லது வண்ணத்தைச் சேர்க்க வேண்டும் என்றால், வகுப்புகளின் எண்ணிக்கை அதிவேகமாக வளரும். இந்த சூழ்நிலையிலிருந்து எப்படி வெளியேறுவது? ஒரு துறையில் வண்ணத்தை சேமிப்பது மற்றும் நிபந்தனை அறிக்கைகளைப் பயன்படுத்தி அனைத்து விருப்பங்களையும் கணக்கிடுவது சிறந்த தீர்வாகாது. ஒரு தனி இடைமுகத்திற்கு வண்ணத்தை நகர்த்துவது ஒரு நல்ல தீர்வுRectangleBlackRectangleGreenRectangleRed. 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என்பது இரண்டு தனித்தனி வகுப்பு படிநிலைகளை இணைக்கும் ஒரு பாலமாகும்.

ஒரு பாலத்தை எவ்வாறு உருவாக்குவது: சுருக்கம் மற்றும் செயல்படுத்தல்

பாலம் வடிவத்தை சித்தரிக்கும் வகுப்பு வரைபடத்தைப் பார்ப்போம்: பாலம் வடிவமைப்பு வடிவத்தை அறிமுகப்படுத்துகிறது - 2இங்கே நீங்கள் இரண்டு சுயாதீன கட்டமைப்புகளைக் காணலாம், அவை ஒருவருக்கொருவர் செயல்பாட்டை பாதிக்காமல் மாற்றலாம். எங்கள் விஷயத்தில்:
  • சுருக்கம் என்பது Shapeவர்க்கம்
  • சுத்திகரிக்கப்பட்ட சுருக்கம் Triangleமற்றும் Rectangleவகுப்புகள்
  • செயல்படுத்துபவர் என்பது Colorஇடைமுகம்
  • ConcreteImplementor என்பது BlackColor, GreenColorமற்றும் RedColorவகுப்புகள்.
வகுப்பு Shapeஎன்பது ஒரு சுருக்கம் - பல்வேறு வண்ணங்களுடன் வடிவங்களை நிரப்புவதை நிர்வகிப்பதற்கான ஒரு பொறிமுறையாகும், இது இடைமுகத்திற்கு Color(செயல்படுத்துபவர்) பிரதிநிதித்துவம் செய்கிறது. மற்றும் Triangleவகுப்புகள் Rectangleஎன்பது வகுப்பினால் கிடைக்கும் பொறிமுறையைப் பயன்படுத்தும் உறுதியான வகுப்புகள் Shape. BlackColor, GreenColorமற்றும் RedColorசெயல்படுத்தல் படிநிலையில் உறுதியான செயலாக்கங்கள்.

பாலம் வடிவத்தை எங்கே பயன்படுத்துவது

இந்த முறையைப் பயன்படுத்துவதன் மிகப்பெரிய நன்மை என்னவென்றால், ஒரு படிநிலையில் மற்றொன்றின் தர்க்கத்தை உடைக்காமல் செயல்பாட்டு வகுப்புகளில் மாற்றங்களைச் செய்யலாம். மேலும், இந்த அணுகுமுறை வகுப்புகளுக்கு இடையில் இணைப்பதைக் குறைக்க உதவுகிறது. இந்த முறையைப் பயன்படுத்தும் போது முக்கியத் தேவை "வழிமுறைகளைப் பின்பற்றவும்" - அவற்றில் எதையும் புறக்கணிக்காதீர்கள்! அந்த முடிவுக்கு, நீங்கள் கண்டிப்பாக பாலம் வடிவத்தைப் பயன்படுத்த வேண்டிய சூழ்நிலைகளைக் கண்டுபிடிப்போம்:
  1. இரண்டு கருத்துகளின் (எ.கா. வடிவங்கள் மற்றும் வண்ணங்கள்) கலவையின் அடிப்படையில் நீங்கள் நிறுவனங்களின் எண்ணிக்கையை விரிவாக்க வேண்டும் என்றால்.

  2. ஒற்றை-பொறுப்புக் கொள்கையைப் பூர்த்தி செய்யாத ஒரு பெரிய வகுப்பை குறுகிய செயல்பாட்டைக் கொண்ட சிறிய வகுப்புகளாகப் பிரிக்க விரும்பினால்.

  3. நிரல் இயங்கும் போது சில நிறுவனங்களின் தர்க்கத்தில் மாற்றங்களைச் செய்வது அவசியமானால்.

  4. வகுப்பின் அல்லது நூலகத்தின் வாடிக்கையாளர்களிடமிருந்து செயல்படுத்தலை மறைக்க வேண்டிய அவசியம் ஏற்பட்டால்.

இந்த வடிவத்தை நீங்கள் பயன்படுத்தும் போது, ​​அது உங்கள் குறியீட்டில் கூடுதல் உட்பொருளைச் சேர்க்கிறது என்பதை எப்போதும் நினைவில் கொள்ளுங்கள் - ஒரே ஒரு வடிவம் மற்றும் ஒன்று அல்லது இரண்டு வண்ணங்கள் மட்டுமே இருக்கும் திட்டத்தில் இதைப் பயன்படுத்துவதில் அர்த்தமில்லை.

வடிவத்தின் நன்மை தீமைகள்

மற்ற வடிவங்களைப் போலவே, ஒரு பாலம் நன்மைகள் மற்றும் தீமைகள் இரண்டையும் கொண்டுள்ளது. பாலம் வடிவத்தின் நன்மைகள்:
  1. இது குறியீட்டின் அளவை மேம்படுத்துகிறது - நிரலின் மற்றொரு பகுதியில் எதையாவது உடைக்கும் பயம் இல்லாமல் செயல்பாட்டைச் சேர்க்கலாம்.
  2. இரண்டு கருத்துகளின் (உதாரணமாக, வடிவங்கள் மற்றும் வண்ணங்கள்) கலவையின் அடிப்படையில் நிறுவனங்களின் எண்ணிக்கை இருக்கும் போது இது துணைப்பிரிவுகளின் எண்ணிக்கையைக் குறைக்கிறது.
  3. இது இரண்டு தனித்தனி படிநிலைகளில் தனித்தனியாக வேலை செய்வதை சாத்தியமாக்குகிறது - சுருக்கம் மற்றும் செயல்படுத்தல். இரண்டு வெவ்வேறு டெவலப்பர்கள் ஒருவருக்கொருவர் குறியீட்டின் விவரங்களை ஆராயாமல் மாற்றங்களைச் செய்யலாம்.
  4. இது வகுப்புகளுக்கு இடையே உள்ள இணைப்பைக் குறைக்கிறது - இரண்டு வகுப்புகளும் இணைந்திருக்கும் ஒரே இடம் பாலம் (அதாவது புலம் Color color).
பாலம் வடிவத்தின் தீமைகள்:
  1. குறிப்பிட்ட சூழ்நிலை மற்றும் திட்டத்தின் ஒட்டுமொத்த கட்டமைப்பைப் பொறுத்து, இது ஒரு நிரலின் செயல்திறனை எதிர்மறையாக பாதிக்கலாம் (உதாரணமாக, நீங்கள் அதிக பொருட்களை துவக்க வேண்டும் என்றால்).
  2. இரண்டு வகுப்புகளுக்கு இடையில் மாற வேண்டியதன் காரணமாக இது குறியீட்டை குறைவாக படிக்க வைக்கிறது.

மூலோபாய முறையிலிருந்து வேறுபாடு

பாலம் அமைப்பு பெரும்பாலும் மற்றொரு வடிவமைப்பு வடிவத்துடன் குழப்பமடைகிறது - உத்தி. அவை இரண்டும் கலவையைப் பயன்படுத்துகின்றன (உதாரணத்தில் உருவங்கள் மற்றும் வண்ணங்களுடன் திரட்டலைப் பயன்படுத்தினோம் என்றாலும், பிரிட்ஜ் பேட்டர்ன் கலவையையும் பயன்படுத்தலாம்), மற்ற பொருட்களுக்கு வேலைகளை ஒப்படைக்கிறது. ஆனால் அவர்களுக்கு இடையே ஒரு வித்தியாசம் உள்ளது, அது மிகப்பெரியது. மூலோபாய முறை ஒரு நடத்தை முறை: இது முற்றிலும் மாறுபட்ட சிக்கல்களை தீர்க்கிறது. உத்தியானது அல்காரிதங்களை ஒன்றுக்கொன்று மாற்றிக்கொள்ள அனுமதிக்கிறது, அதே சமயம் பிரிட்ஜ் வெவ்வேறு செயலாக்கங்களுக்கு இடையே தேர்வு செய்வதற்காக செயலாக்கங்களிலிருந்து ஒரு சுருக்கத்தை பிரிக்கிறது. வேறு வார்த்தைகளில் கூறுவதானால், ஒரு மூலோபாயம் போலல்லாமல், ஒரு பாலம் முழு நிறுவனங்களுக்கும் அல்லது படிநிலை கட்டமைப்புகளுக்கும் பொருந்தும். டெவலப்பரின் ஆயுதக் களஞ்சியத்தில் பாலம் முறை ஒரு நல்ல ஆயுதமாக இருக்கும். முக்கிய விஷயம் என்னவென்றால், அதைப் பயன்படுத்துவது மதிப்புக்குரிய சூழ்நிலைகளை அடையாளம் காண்பது மற்றும் வேறு சில முறை பொருத்தமானது என்பதை அங்கீகரிப்பது.
கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION