🥞 BE
home

Factory Pattern

객체를 만드는 부분을 Sub class에 맡기는 패턴.
객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.
구현
package designPattern.factory; 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("Factort ame :: " + ame); } }
Java
복사
결과
> Task :HelloWorld.main() Factory latte :: Hi this coffee is 4000 Factort ame :: Hi this coffee is 3000
Shell
복사