728x90
Factory Method Pattern 팩토리 패턴 이란?
팩토리 패턴이란 객체 생성 과정을 분리하여 그것만 처리 하는 패턴이며,
인터페이스를 구현한 클래스가 여러 개 라면 해당 클래스들을 어떠한 상황에 맞게 클래스를 찾아 생성 해줘야 불편함을 해소 하기 위한 패턴이다.
간단한 팩토리 패턴은 메서드를 통해 객체 생성을 관리할 수 있다.
Factory Method Pattern 팩토리 패턴을 어떨 때 사용 하지?
어떠한 클래스를 만들 때 타입을 미리 알 수 없는 경우나,
어떠한 클래스를 만들고, 해당 클래스가 연속적인 클래스를 필요한 경우
어떠한 클래스를 특정 하기 위해 서브 클래스가 필요한 경우
또는 복합한 클래스 내부 구조를 간단하게 만들기 위한 경우
Factory Method Pattern 팩토리 패턴 구조
Factory Method Pattern 팩토리 패턴 장단점
장점
- 내부적으로 인스턴스를 만드는 코드를 수정하지않고 새로운 인스턴스를 다양한 방법으로 확장할 수 있음
- 객체의 일관성을 향상 시키고 코드가 간결해진다
- 확장성 있는 프로젝트 구성에 용이하다
단점
- 클래스가 많아진다 또한 클래스 계층도 커질 수 있다
Factory Method Pattern 팩토리 패턴 예시
예시 상황
삼성폰이랑 애플폰 그리고 이 두개를 만드는 두개의 공장을 만들 예정이다.
1. 핸드폰
핸드폰 클래스는 여러가지의 속성들이 있지만 간단하게 기종이름만 한다.
핸드폰 클래스에는 삼성폰 애플폰이 있다
1 2 3 | public abstract class 핸드폰{ public abstract String get기종이름(); } | cs |
1 2 3 4 5 6 | public class 삼성폰 extends 핸드폰 { @Override public String get기종이름() { return ""; } } | cs |
1 2 3 4 5 6 | public class 애플폰 extends 핸드폰 { @Override public String get기종이름() { return "애플13"; } } | cs |
2.핸드폰Factory
팩토리 클래스를 작성한다
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class 핸드폰Factory { 핸드폰 핸드폰생성(String 핸드폰) { try { Class<?> cls = Class.forName(핸드폰); Object obj = cls.newInstance(); return (핸드폰)obj; } catch (Exception e) { return null; } } } | cs |
자 예제를 다 만들었다 실제 구현 하는 팩토리가 클래스명을 받아 구현한다
1 2 3 4 5 6 7 8 9 | public static void main(String[] args) { 핸드폰Factory fm = new 핸드폰Factory(); 핸드폰 m1 = fm .핸드폰생성("패키지.삼성폰"); 핸드폰 m2 = fm .핸드폰생성("패키지.애플폰"); System.out.println(m1.getName()); System.out.println(m2.getName()); } | cs |
아주 간단한 예제 이다 팩토리 패턴이 어떠한건지 어떻게 써야 하는지 감이 잡힌다면
이와 비슷하게 응용해서 쓰면 된다
관련 글 |
저의 글을 읽어 주셔서 감사합니다. 오늘도 즐거운 하루 보내세요.
저의 글이 조금이나마 도움이 되셨다면 로그인이 필요 없는 공감♥ 한번 꾸욱 눌러주세요 하하~
728x90
'디자인패턴' 카테고리의 다른 글
[ Design Pattern ] Abstract Factory Pattern 추상 팩토리 패턴 (0) | 2022.05.21 |
---|