자바의 팩토리 패턴

    이를 자바로 구현하면 다음과 같습니다.

     

    자바

    코드 위치: ch1/6.java

    abstract class Coffee { 
        public abstract int getPrice(); 
        
        @Override
        public String toString() {
            return "Hi this coffee is " + this.getPrice();
        }
    }
    class CoffeeFactory { 
        public static Coffee getCoffee(String type, int price) {
            if ("Latte".equalsIgnoreCase(type)) return new Latte(price);
            else if ("Americano".equalsIgnoreCase(type)) return new Americano(price);
            else {
                return new DefaultCoffee();
            } 
        }
    }
    class DefaultCoffee extends Coffee {
        private int price;
    
        public DefaultCoffee() {
            this.price = -1;
        }
    
        @Override
        public int getPrice() {
            return this.price;
        }
    }
    class Latte extends Coffee { 
        private int price; 
        
        public Latte(int price) {
            this.price = price; 
        }
        @Override
        public int getPrice() {
            return this.price;
        } 
    }
    class Americano extends Coffee { 
        private int price; 
        
        public Americano(int price) {
            this.price = price; 
        }
        @Override
        public int getPrice() {
            return this.price;
        } 
    } 
    public class HelloWorld { 
         public static void main(String[] args) { 
            Coffee latte = CoffeeFactory.getCoffee("Latte", 4000);
            Coffee ame = CoffeeFactory.getCoffee("Americano", 3000); 
            System.out.println("Factory latte ::" + latte);
            System.out.println("Factory ame ::" + ame); 
         }
    } 
    /*
    Factory latte ::Hi this coffee is 4000
    Factory ame ::Hi this coffee is 3000
    */
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.