| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 오브젝트
- 독서일지
- 주니어개발자
- 헤드퍼스트
- 클린코드
- JAVA개발자
- Java
- 디자인패턴
- 성수핫플
- 책너두
- 객체지향
- 성수직장인
- 깨끗한코드
- 성수볼거리
- 객체지향프로그래밍
- 직장인
- 코딩
- 성수맛집
- docker
- 개발자
- 성수
- 상속
- JavaScript
- Linux
- 직장인점심
- 독서
- 헤드퍼스트디자인패턴
- 책읽기
- IntelliJ
- DesignPattern
- Today
- Total
목록DesignPattern (8)
런타임노트
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) 구상데코레이터..
8일차 헤드퍼스트 디자인패턴 [화요일] 114-125pg 요약 CHAPTER 03. 객체 꾸미기 (feat. 데코레이터 패턴) 상속을 남용하는 사례 → 객체 작성 : 실행 중에 클래스를 데코레이션하는 방법 배우기 [스타바즈] 처음 스타바즈의 코드는 클래스 관련 문제에서 달라지는 부분과, 달라지지 않는 부분 분리하기 구현보다는 인터페이스에 맞춰서 프로그래밍한다. 의 두 가지를 지키고 있지 않다. 상속을 사용한다고 해서 무조건 유연하거나 관리하기 쉬운 디자인이 아니다. 구성과 위임으로 실행 중에 행동을 ‘상속’하는 방법이 있다. [코드 관리에 구성이 미치는 영향] 객체를 동적으로 구성하면 기존 코드를 고치는 대신 새로운 코드를 만들어서 기능을 추가 할 수 있다. [디자인 원칙 : OCP: Open-Close..
6일차 헤드퍼스트 디자인패턴 [토요일] 87-101pg 요약 CHAPTER 02. 객체들에게 연락돌리기 (feat. 옵저버 패턴) 옵저버 패턴 : 뭔가 중요한 일이 일어났을 때 객체에게 새 소식을 알려 줄 수 있는 패턴! 옵저버 패턴 : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다. 옵저버 패턴의 구조(옵저버 패턴의 클래스 다이어그램) Subject 인터페이스 ConcreteSubject(구상 클래스) Observer 인터페이스 ConcreteObserver 객체들의 느슨한 결합(Loose Coupling) : 객체들이 상호작용할 수 있지만, 서로를 잘 모르는 관계. → 유연성이 좋아짐. 옵저버 패턴은 느슨한 결합의 ..
5일차 헤드퍼스트 디자인패턴 [금요일] 70-86pg 요약 CHAPTER 02. 객체들에게 연락돌리기 (feat. 옵저버 패턴) 옵저버 패턴 : 뭔가 중요한 일이 일어났을 때 객체에게 새 소식을 알려 줄 수 있는 패턴! Story… 차세대 인터넷 기반 기상 스테이션 구축 프로젝트 WeatherData 객체를 바탕으로 기상 스테이션을 만들 예정 WeatherData 객체는 현재 기상조건을 추적한다. 표시할 3개의 항목 : 현재 조건, 기상 통계, 간단한 기상 예보 → 위 항목 모두 WeatheData에서 최신 측정치를 수집할 때마다 실시간으로 갱신 됨. 타 개발자가 새로운 날씨 디스플레이를 쉽게 추가할 수 있도록 해야함. [ 기상 모니터 애플리케이션 ] 기상 스테이션 : 실제 기상정보를 수집하는 물리 장비..