CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /๊ณต์žฅ ๋””์ž์ธ ํŒจํ„ด
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

๊ณต์žฅ ๋””์ž์ธ ํŒจํ„ด

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…• ์นœ๊ตฌ! ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ๋””์ž์ธ ํŒจํ„ด์„ ๊ณ„์† ๊ณต๋ถ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ˆ˜์—…์—์„œ๋Š” ๊ณต์žฅ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ„ด์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ๊ณต์žฅ์ด ์ปคํ”ผ์ˆ์„ ์—ฌ๋Š” ๋ฐ ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”์ง€ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ณต์žฅ์„ ๋งŒ๋“œ๋Š” ๊ฐ„๋‹จํ•œ 5๋‹จ๊ณ„๋ฅผ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ณต์žฅ ๋””์ž์ธ ํŒจํ„ด - 1 ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๊ฐ™์€ ํŒŒ์žฅ์— ์žˆ๊ณ  ์ด ๊ฐœ๋…์„ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ฃผ์ œ์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์˜ ์ƒ์†
  • Java์—์„œ ์ฐธ์กฐ ์œ ํ˜•์˜ ์ถ•์†Œ ๋ฐ ํ™•์žฅ
  • ๋‹ค๋ฅธ ํด๋ž˜์Šค์™€ ๊ฐœ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ.

๊ณต์žฅ์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํŒฉํ† ๋ฆฌ ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ์ฒด ์ƒ์„ฑ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” 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. ๊ทธ๋Ÿฌ๋‚˜ an์ด 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