티스토리 뷰
팩토리 패턴 (factory pattern)
객체를 사용하는 코드에서 객체 생성 부분을 따로 떼어내어 추상화한 패턴이자, 상속관계에 있는 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 대한 구체적인 내용을 결정하는 패턴이다.
상위 클래스와 하위 클래스가 분리되어 많은 유연성을 갖게 되고, 유지 보수성이 좋다.
면접을 위한 cs 전공 지식 노트 예제에서는 하위 클래스를 바리스타 공장으로, 상위 클래스를 레시피로 정의하여 예시를 보여주었다.
/*
면접을 위한 cs 전공 지식 노트 예제
2. Factory pattern
상위 클래스인 객체 생성 부분을 추상화하고, 하위 클래스에서 객체 생성에 대한 구체적인 내용을 결정하는 패턴이다.
상위 클래스와 하위 클래스가 분리되어 많은 유연성을 갖게되고, 유지 보수성이 좋다.
*/
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 { // Coffee class 상속, 하위 클래스
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 FactoryPattern {
public static void main(String[] args) {
Coffee latte = CoffeeFactory.getCoffee("Latte", 5500);
Coffee ame = CoffeeFactory.getCoffee("Americano", 4500);
System.out.println("Factory latte :: " + latte);
System.out.println("Factory ame :: " + ame);
}
}
/* 실행 결과값
Factory latte :: Hi this coffee is 5500
Factory ame :: Hi this coffee is 4500
*/
내용 전문 및 출처 - 면접을 위한 cs 전공 지식 노트
'study > Web' 카테고리의 다른 글
디자인 패턴 - 옵저버 패턴(observer pattern) (0) | 2022.10.13 |
---|---|
디자인 패턴 - 전략 패턴(strategy pattern) (0) | 2022.10.13 |
디자인 패턴 - 싱글톤 패턴 (singleton pattern) (0) | 2022.10.06 |
Mqtt protocol (0) | 2022.08.29 |
HTTP 통신 구조 (0) | 2022.07.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 디자인 패턴
- 회원 로그인
- git
- Java
- 검색 결과 내 페이지네이션
- django.contrib.auth
- path variable
- Python
- 암호화
- Django tutorial
- error: failed to push some refs to 'https://github.com/
- django-environ
- 웹페이지
- 커맨드 객체
- 한글 형태소 분석기
- musma
- git공부
- API
- authenticate()
- python3
- 회원가입
- git 공부
- django
- 면접을 위한 CS 전공 지식 노트
- 환경 변수 설정
- 혼자 공부하는 파이썬
- Magazine K
- 배열
- Spring
- 톰캣
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함