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

தொழிற்சாலை வடிவமைப்பு முறை

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

தொழிற்சாலை என்றால் என்ன?

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

விதவிதமான காபி தயார் செய்வோம்

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

public class Coffee {
    public void grindCoffee(){
        // Grind the coffee
    }
    public void makeCoffee(){
        // Brew the coffee
    }
    public void pourIntoCup(){
        // Pour into a cup
    }
}
அடுத்து, அதன் குழந்தை வகுப்புகளை உருவாக்குவோம்:

public class Americano extends Coffee {}
public class Cappuccino extends Coffee {}
public class CaffeLatte extends Coffee {}
public class Espresso extends Coffee {}
எங்கள் வாடிக்கையாளர்கள் எந்த வகையான காபியையும் ஆர்டர் செய்யலாம். அவர்களின் உத்தரவுகள் திட்டத்திற்கு அனுப்பப்பட வேண்டும். இதை பல வழிகளில் செய்யலாம், எடுத்துக்காட்டாக, பயன்படுத்தி String. ஆனால் enumஇதற்கு ஒரு சிறந்தது. enumஆர்டர் செய்யக்கூடிய காபி வகைகளுடன் தொடர்புடைய enum புலங்களை உருவாக்கி வரையறுப்போம் :

public enum CoffeeType {
    ESPRESSO,
    AMERICANO,
    CAFFE_LATTE,
    CAPPUCCINO
}
நன்று. இப்போது எங்கள் காபி கடைக்கான குறியீட்டை எழுதுவோம்:

public class CoffeeShop {
    
    public Coffee orderCoffee(CoffeeType type) {
        Coffee coffee = null;
        
        switch (type) {
            case AMERICANO:
                coffee = new Americano();
                break;
            case ESPRESSO:
                coffee = new Espresso();
                break;
            case CAPPUCCINO:
                coffee = new Cappucсino();
                break;
            case CAFFE_LATTE:
                coffee = new CaffeLatte();
                break;
        }

        coffee.grindCoffee();
        coffee.makeCoffee();
        coffee.pourIntoCup();

        System.out.println("Here's your coffee! Thanks! Come again!");
        return coffee;
    }
}
முறையை orderCoffeeஇரண்டு பகுதிகளாகப் பிரிக்கலாம்:
  1. ஒரு அறிக்கையில் காபியின் ஒரு குறிப்பிட்ட நிகழ்வை உருவாக்குதல் switch. இங்குதான் ஒரு தொழிற்சாலை அதைச் செய்கிறது - நிபந்தனைகளைப் பொறுத்து ஒரு குறிப்பிட்ட வகையை உருவாக்கவும்.
  2. தயாரிப்பு - இது ஒரு கோப்பையில் அரைத்து, காய்ச்சுவது மற்றும் ஊற்றுவது.
எதிர்காலத்தில் நீங்கள் இந்த முறையில் மாற்றங்களைச் செய்ய வேண்டுமா என்பதைத் தெரிந்து கொள்ள வேண்டியது இங்கே:
  1. தயாரிப்பில் ஈடுபடும் படிகள் (அரைத்தல், காய்ச்சுதல் மற்றும் ஒரு கோப்பையில் ஊற்றுதல்) மாறாமல் இருக்கும் (குறைந்தபட்சம் நாங்கள் இதை எண்ணுகிறோம்).
  2. ஆனால் காபிகளின் வகைப்பாடு மாறலாம். மொச்சை... ஃப்ராப்பு... மொச்சச்சி... எதுவாக இருந்தாலும் புதுவிதமான காபி.
எதிர்காலத்தில் நாம் முறையின் அறிக்கையில் மாற்றங்களைச் செய்ய வேண்டும் என்று நாங்கள் ஏற்கனவே உறுதியாக நம்பலாம் switch. எங்கள் காபி ஷாப்பில் orderCoffeeவெவ்வேறு வகையான காபிகளை உருவாக்கும் ஒரே இடமாக இந்த முறை இருக்காது என்பதும் சாத்தியமாகும். இதன் விளைவாக, பல இடங்களில் மாற்றங்கள் செய்யப்பட வேண்டும். நான் என்ன செய்கிறேன் என்பதை நீங்கள் ஏற்கனவே புரிந்துகொண்டிருக்கலாம். நாம் மறுபரிசீலனை செய்ய வேண்டும். காபியை உருவாக்குவதற்குப் பொறுப்பான தொகுதியை இரண்டு காரணங்களுக்காக தனி வகுப்பிற்கு நகர்த்தவும்:
  1. காபி தயாரிக்கும் தர்க்கத்தை நாம் மற்ற இடங்களில் மீண்டும் பயன்படுத்தலாம்.
  2. வகைப்படுத்தல் மாறினால், காபி உருவாக்கப்பட்ட எல்லா இடங்களிலும் குறியீட்டைத் திருத்த வேண்டியதில்லை. நமது குறியீட்டை ஒரே இடத்தில் மாற்றினால் போதும்.
வேறு வார்த்தைகளில் கூறுவதானால், ஒரு தொழிற்சாலை அமைப்பதற்கான நேரம் வந்துவிட்டது.

எங்கள் முதல் தொழிற்சாலையை அமைக்கிறது

இதைச் செய்ய, காபி வகுப்புகளின் தேவையான நிகழ்வுகளை உருவாக்குவதற்கு மட்டுமே பொறுப்பான புதிய வகுப்பை உருவாக்குவோம்:

public class SimpleCoffeeFactory {
    public Coffee createCoffee(CoffeeType type) {
        Coffee coffee = null;

        switch (type) {
            case AMERICANO:
                coffee = new Americano();
                break;
            case ESPRESSO:
                coffee = new Espresso();
                break;
            case CAPPUCCINO:
                coffee = new Cappucino();
                break;
            case CAFFE_LATTE:
                coffee = new CaffeLatte();
                break;
        }
        
        return coffee;
    }
}
வாழ்த்துகள்! தொழிற்சாலை வடிவமைப்பு முறையை அதன் எளிமையான வடிவத்தில் (கிட்டத்தட்ட) செயல்படுத்தியுள்ளோம். நாம் முறையை நிலையானதாக மாற்றினால் அது இன்னும் எளிமையாக இருந்திருக்கும் createCoffee. ஆனால் நாம் இரண்டு திறன்களை இழப்போம்:
  1. SimpleCoffeeFactoryமுறையை மரபுரிமையாக மாற்றும் திறன் createCoffee.
  2. எங்கள் வகுப்புகளுக்கு தேவையான தொழிற்சாலை செயலாக்கத்தை சேர்க்கும் திறன்.
மூலம், செயல்படுத்தல் பற்றி பேசுகையில்... நாம் காபி கடைக்கு திரும்பி எங்களின் காபி தயாரிக்கும் தொழிற்சாலையை சேர்க்க வேண்டும்.

காபி கடையில் ஒரு தொழிற்சாலையைச் சேர்த்தல்

ஒரு தொழிற்சாலையைப் பயன்படுத்தி காபி ஷாப் வகுப்பை மீண்டும் எழுதுவோம்:

public class CoffeeShop {

    private final SimpleCoffeeFactory coffeeFactory;

    public CoffeeShop(SimpleCoffeeFactory coffeeFactory) {
        this.coffeeFactory = coffeeFactory;
    }

    public Coffee orderCoffee(CoffeeType type) {
        Coffee coffee = coffeeFactory.createCoffee(type);
        coffee.grindCoffee();
        coffee.makeCoffee();
        coffee.pourIntoCup();

        System.out.println("Here's your coffee! Thanks! Come again!");
        return coffee;
    }
}
சிறப்பானது. இப்போது தொழிற்சாலை வடிவமைப்பு வடிவத்தின் பொதுவான கட்டமைப்பின் சுருக்கமான விளக்கத்தை வழங்குவோம்.

உங்கள் சொந்த தொழிற்சாலையைத் திறப்பதற்கான 5 படிகள்

படி 1. கீழே உள்ள வரைபடத்தில் உள்ளதைப் போல, உங்கள் திட்டத்தில் பல சந்ததியினருடன் ஒரு வகுப்பு உள்ளது: தொழிற்சாலை வடிவமைப்பு முறை - 2படி 2. enumஒவ்வொரு குழந்தை வகுப்பிற்கும் ஒரு புலத்துடன் நீங்கள் உருவாக்குகிறீர்கள்:

    enum CatType {
        LION,
        TIGER,
        FLUFFY
    }
படி 3. உங்கள் தொழிற்சாலையை உருவாக்குங்கள். அதை அழைக்கவும் CatFactory. குறியீடு இதோ:

class CatFactory {}
படி 4. உங்கள் தொழிற்சாலையில், createCatஒரு வாதத்தை எடுக்கும் முறையை உருவாக்கவும் CatType. குறியீடு இதோ:

    class CatFactory {
        public Cat createCat(CatType type) {
            
        }
    }
படி 5. முறையின் உடலில், switchenum புலங்களைக் கணக்கிடும் ஒரு அறிக்கையை எழுதவும் மற்றும் அனுப்பப்பட்ட மதிப்புக்கு ஒத்த வகுப்பின் உதாரணத்தை உருவாக்கவும் enum:

class CatFactory {
        public Cat createCat(CatType type) {
            Cat cat = null;
            
            switch (type) {
                case LION:
                    cat =  new Fluffy();
                    break;
                case TIGER:
                    cat = new Tiger();
                    break;
                case FLUFFY:
                    cat =  new Lion();
                    break;
            }
            
            return cat;
        }
    }
இப்போது நீங்கள் முதலாளியைப் போல ஒரு தொழிற்சாலையை நடத்தலாம். :)

எப்படி பயிற்சி செய்வது

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