일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 주니어개발자
- 상속
- 책너두
- 개발자
- 코딩
- 디자인패턴
- DesignPattern
- 성수
- IntelliJ
- 객체지향
- 성수볼거리
- 객체지향프로그래밍
- 헤드퍼스트
- JavaScript
- Linux
- 성수핫플
- 오브젝트
- 클린코드
- 성수직장인
- 직장인점심
- 헤드퍼스트디자인패턴
- JAVA개발자
- 책읽기
- 직장인
- 독서일지
- Java
- 독서
- 성수맛집
- docker
- 깨끗한코드
- Today
- Total
목록책책책 책을 읽읍시다‼ ver.개발/[ 헤드퍼스트 디자인패턴 ] (48)
닭발개발
18일차 헤드퍼스트 디자인패턴 [3주차_토요일] 240-256pg 요약 CHAPTER 06. 호출 캡슐화하기 (feat. 커맨드 패턴) 메소드 호출을 캡슐화 한다. [ 커맨트 패턴 정의 ] 요청 내역을 객체로 캡술화해서 객체를 서로 다른 요청 내역에 따라 매개변수화할 수 있다. → 요청을 큐에 저장하거나 로그로 기록하거나 작업취소 기능을 사용할 수 있다. 명령으로 객체를 매개변수화 [ NoCommand 객체 ] 일종의 Null Object 딱히 리턴할 객체도 없고 클라이언트가 null을 처리하지 않게 하고 싶을 때 활용 [ 람다 표현식으로 고치기 ] 구상 커맨드 객체를 람다 표현식으로 바꾸면 구상 커맨드 클래스를 모두 지워도 된다. 이 방법은 커맨드 인터페이스에 추상 메소드가 하나뿐일 때만 사용할 수 있..
17일차 헤드퍼스트 디자인패턴 [3주차_금요일] 227-239pg 요약 CHAPTER 06. 호출 캡슐화하기 (feat. 커맨드 패턴) 메소드 호출을 캡슐화 한다. [ 만능 IOT 리모컨 ] 프로그래밍이 가능한 7개의 슬롯 7개의 슬롯마다 각각 온오프 버튼이 있다. 마지막으로 누른 버튼의 명령을 취소하는 ‘UNDO’ 버튼이 있다. 리모컨에서 제어해야 하는 객체의 인터페이스 파악 클래스가 많고, 공통 인터페이스가 없다. 앞으로 추가될 클래스도 있음 리모컨 버튼이 눌렸을 때 호출되는 코드와 실제로 일을 처리하는 코드가 분리되어야 한다. [ 커맨트 패턴 ] 어떤 작업을 요청하는 쪽과 그 작업을 처리하는 쪽을 분리할 수 있다. 특정 객체에 관한 특정 작업 요청을 캡슐화해 준다. 객체마을 식당 예시 고객이 종업원..
16일차 헤드퍼스트 디자인패턴 [3주차_목요일] 217-226pg 요약 CHAPTER 05. 하나뿐인 특별한 객체 만들기 (feat. 싱글턴 패턴) [ 초콜릿 보일러 문제 해결하기 ] 방법1. getnstance() 메소드 동기화 하기 : 항상 올바른 결과가 나옴. 초콜릿 보일러의 속도문제는 중요히자 않으니 이 방법 괜찮음. 방법2. 인스턴스를 시작하자마자 만들기 : 초콜릿 보일러의 인스턴스는 항상 필요하기 때문에 정적으로 초기화 하는 것도 괜찮은 방법. 하지만 방법1과 큰 차이가 없다. 방법3. DCL 사용하기 : 속도 문제가 중요하지 않기 때문에 DCL까지 쓸 필요 없음. 클래스 로더가 2개 이상이라면 같은 클래스를 여러 번 로딩할 수도 있으니, 클래스 로더가 여러 개라면 싱글턴을 조심해서 사용해야 ..
15일차 헤드퍼스트 디자인패턴 [3주차_수요일] 205-216pg 요약 CHAPTER 05. 하나뿐인 특별한 객체 만들기 (feat. 싱글턴 패턴) 게으른 인스턴스 생성 (lazyinstantiation) : 인스턴스가 필요한 상황이 오기 전까지 아예 인스턴스를 생성하지 않도록 하는 방법. 싱글톤 패턴의 생성자는 private으로 저장되어 있다. public으로 지정된 생성자는 없음 싱클톤 객체가 필요할 때는 인스턴스를 달라고 요청한다. → getInstance() [ 초콜릿 보일러 ] 보일러가 가득 차 있을 때와 비어있을 때를 분리해서 코딩 [ 싱글톤 패턴 (Singleton Pattern) ] 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. 이 패턴을 실제 적용할 때는 클래스..
14일차 헤드퍼스트 디자인패턴 [3주차_화요일] 190-204pg 요약 CHAPTER 04. 객체지향 빵 굽기 (feat. 팩토리 패턴) [ 추상 팩토리 패턴(Abstract Factory Pattern) ] 구상 클래스에 의존하지 않고도 서로 연관되거나 의존적인 객체로 이루어진 제품군을 생산하는 인터페이스를 제공한다. 구상 클래스는 서브 클래스에서 만든다. [ 팩토리 메소드 패턴 =/= 추상 팩토리 패턴 ] 팩토리 메소드 패턴 상속으로 객체를 만든다. 객체 생성 방법 : 클래스를 확장하고, 팩토리 메소드를 오버라이드 한다. 클라이언트와 구상 형식을 분리하는 역할 추상 팩토리 패턴 제품군을 만드는 추상 형식을 제공한다. 제품이 생산되는 방법은 이 형식의 서브클래스에서 정의한다. 클라이언트와 실제 구상 제..
13일차 헤드퍼스트 디자인패턴 [월요일] 180-189pg 요약 CHAPTER 04. 객체지향 빵 굽기 (feat. 팩토리 패턴) [ 원재료 품질 관리하기 ] 모든 피자는 같은 구성 요소지만, 지역마다 구성 요소를 다른 종류로 구현한다. 추상팩토리 : 제품 군을 위한 인터페이스를 제공함. 이 인터페이스로 코드와 제품을 생산하는 팩토리를 분리함. 발췌 💡 추상팩토리 : 제품 군을 위한 인터페이스를 제공함. 이 인터페이스로 코드와 제품을 생산하는 팩토리를 분리함. 메모 - 숙제 182p package com.book.factoryPattern; /** * 182p 숙제 : 아래 클래스 이용해서 ChicagoPizzaIngredientFactory 완성하기 * ThickCrustDough * EggPlant ..
12일차 헤드퍼스트 디자인패턴 [토요일] 166-179pg 요약 CHAPTER 04. 객체지향 빵 굽기 (feat. 팩토리 패턴) [ 병렬 클래스 계층구조 알아보기 ] 생산자 클래스와 거기에 대응되는 제품 클래스는 병렬 계층구조로 볼 수 있다. Pizza(제품 클래스)와 PizzaStore(생산자 클래스) 살펴보기 둘 다 추상 클래스로 시작 그 클래스를 확장하는 구상 클래스들을 가지고 있다. 뉴욕지점, 시카고 지점의 구체적인 구현은 구상 클래스들이 책임지고 있다. [ 팩토리 메소드 패턴의 정의 ] 팩토리 메소드 패턴에서는 객체를 생성할 때 필요한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정한다. 팩토리 메소드 패턴을 사용하면 클래스 인스턴스 만드는 일을 서브클래스에게 맡기게..
11일차 헤드퍼스트 디자인패턴 [금요일] 153-165pg 요약 CHAPTER 04. 객체지향 빵 굽기 (feat. 팩토리 패턴) [ 다양한 팩토리 만들기 - 피자 프랜차이즈 사업 시작 ] 피자가게 지점내기. PizzaStrore 코드를 모든 지점에서 활용한다. ⁉ 문제발생 : 굽는방식이나 자르는 것이 사라지거나 하는 문제 발생 해결 : PizzaStore와 피자 제작코드 전체를 하나로 묶어주는 프레임워크 만들기. + 유연성 잃으면 안됨. [ 피자가게 프레임워크 만들기 ] 각 지점마다 달라지는 것은 ‘피자 스타일’ 뿐. 달라지는 점을 createPizza()에 넣는다. Pizza는 추상 클래스라서 orderPizza()는 실제로 어떤 구상 클래스에서 작업이 처리되고 있는지 전혀 알 수 없다. → Pizz..
10일차 헤드퍼스트 디자인패턴 [목요일] 140-152pg 요약 CHAPTER 04. 객체지향 빵 굽기 (feat. 팩토리 패턴) : 느슨한 결합으로 객체지향 디자인 만들기 : 팩토리 패턴으로 불필요한 의존성을 없애서 결합문제를 해결하자. ❓어떻게 하면 애플리케이션에서 구상 클래스의 인스턴스 생성 부분을 전부 찾아내서 애플리케이션의 나머지 부분으로부터 분리(캡슐화)할 수 있을까요? [ 피자 코드 예시 ] 최첨단 피자가게 에서는 신메뉴가 들어오고 삭제되는 메뉴가 생길 때마다 일일히 코드를 코쳐주어야 하는 단점이 있다. orderPizza() 메소드에서 가장 문제가 되는 부분 : 인스턴스를 만드는 구상 클래스 선택하는 부분 → 객체 생성 부분 캡슐화 하기 객체 생성을 처리하는 클래스는 팩토리(Factory)..
9일차 헤드퍼스트 디자인패턴 [수요일] 126-139pg 요약 CHAPTER 03. 객체 꾸미기 (feat. 데코레이터 패턴) [ Beverage 클래스 작성하기 ] 어떤 구성 요소를 가지고 데코레이터를 만들 때 새로운 행동을 추가하지. 새로운 행동은 객체를 구성해서 얻는 거잖아. 슈퍼클래스로부터 행동을 상속받아서 얻는 것이 아님. → 행동을 상속받으려고 Beverage의 서브클래스를 만든 게 아니라 형식을 맞추려고 한 것. if 상속만 써야 했다면 행동이 컴파일 시에 정적으로 결정되어 버림. 슈퍼클래스에서 받은 것과 코드로 오버라이드한 것만 쓸 수 있음. [ 코드구현 ] Beverage는 추상 구성요소, HousBlend는 구상 구성요소 추상데코레이터 (CondimentDecorator) 구상데코레이터..