| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- JAVA개발자
- 개발자
- 객체지향프로그래밍
- 성수볼거리
- 깨끗한코드
- 성수
- 독서일지
- 클린코드
- IntelliJ
- 직장인점심
- docker
- 객체지향
- 헤드퍼스트
- 코딩
- 책읽기
- Linux
- 직장인
- 성수직장인
- 디자인패턴
- 책너두
- 오브젝트
- 성수핫플
- DesignPattern
- JavaScript
- 헤드퍼스트디자인패턴
- 주니어개발자
- 상속
- Java
- 성수맛집
- 독서
- Today
- Total
런타임노트
[헤드퍼스트 디자인패턴] 10일차. 140-152pg 본문
10일차
헤드퍼스트 디자인패턴 [목요일]
140-152pg
요약
CHAPTER 04. 객체지향 빵 굽기 (feat. 팩토리 패턴)
: 느슨한 결합으로 객체지향 디자인 만들기
: 팩토리 패턴으로 불필요한 의존성을 없애서 결합문제를 해결하자.
❓어떻게 하면 애플리케이션에서 구상 클래스의 인스턴스 생성 부분을 전부 찾아내서 애플리케이션의 나머지 부분으로부터 분리(캡슐화)할 수 있을까요?
[ 피자 코드 예시 ]
최첨단 피자가게 에서는 신메뉴가 들어오고 삭제되는 메뉴가 생길 때마다 일일히 코드를 코쳐주어야 하는 단점이 있다.
orderPizza() 메소드에서 가장 문제가 되는 부분 : 인스턴스를 만드는 구상 클래스 선택하는 부분
→ 객체 생성 부분 캡슐화 하기
객체 생성을 처리하는 클래스는 팩토리(Factory) : SimplePizzaFactory
[ 객체 생성 팩토리 만들기 ]
SimplePizzaFactory 클래스에서 createPizza() 메소드 정의하기.
[ 정적 팩토리(static factory) ]
간단한 팩토리를 정적 메소드로 정의하는 기법.
정적 메소드를 쓰면 객체 생성 메소드를 실행하려고 객체의 인스턴스를 만들지 않아도 된다.
BUT, 서브클래스를 만들어서 객체 생성 메소드의 행동을 변경할 수 없다는 단점이 있다.
[ 클라이언트 코드 → 팩토리로 피자 객체 생성하도록 수정하기 ]
PizzaStrore 클래스에 SimplePizzaFactory의 레퍼런스 저장하기.
new 연산자 대신 팩토리 객체에 있는 create 메소드를 사용한다.
[ 간단한 팩토리 란? ]
디자인 패턴보다는 프로그래밍에서 자주 쓰이는 “관용구”에 가깝다.
[ 다양한 팩토리 만들기 ]
피자가게 지점내기.
발췌
💡 ‘new’연산자가 눈에 띈다면 ‘구상’이라는 용어를 떠올려 주세요.
💡 간단한 팩토리를 정적 메소드로 정의하는 기법.
정적 메소드를 쓰면 객체 생성 메소드를 실행하려고 객체의 인스턴스를 만들지 않아도 된다.
BUT, 서브클래스를 만들어서 객체 생성 메소드의 행동을 변경할 수 없다는 단점이 있다.
'책책책 책을 읽읍시다‼ ver.개발 > [ 헤드퍼스트 디자인패턴 ]' 카테고리의 다른 글
| [헤드퍼스트 디자인패턴] 12일차. 166-179pg (0) | 2023.05.08 |
|---|---|
| [헤드퍼스트 디자인패턴] 11일차. 153-165pg (0) | 2023.05.08 |
| [헤드퍼스트 디자인패턴] 9일차. 126-139pg (0) | 2023.05.04 |
| [헤드퍼스트 디자인패턴] 8일차. 114-125pg (0) | 2023.05.02 |
| [헤드퍼스트 디자인패턴] 7일차. 102-113pg (0) | 2023.05.02 |