일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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개발자
- 객체지향
- 책너두
- Linux
- docker
- Java
- 상속
- 직장인
- 개발자
- 깨끗한코드
- 성수맛집
- IntelliJ
- 책읽기
- 주니어개발자
- 헤드퍼스트
- 오브젝트
- JavaScript
- DesignPattern
- 성수볼거리
- 클린코드
- 성수핫플
- 헤드퍼스트디자인패턴
- 성수직장인
- Today
- Total
목록책책책 책을 읽읍시다‼ ver.개발/[ 헤드퍼스트 디자인패턴 ] (48)
닭발개발
28일차 헤드퍼스트 디자인패턴 [5주차_목요일] 374-386pg 요약 CHAPTER 09. 컬렉션 잘 관리하기 (feat. 반복자 패턴과 컴포지트 패턴) 객체 저장방식을 보여 주지 않으면서도 클라이언트가 객체에 일일이 접근할 수 있게 해 주는 방법 [ 단일 역할 원칙 ] 어떤 클래스가 바뀌는 이유는 하나뿐이어야 한다. [ Iterable 인터페이스 ] Iterator 인터페이스를 구현하는, 반복자를 리턴하는 iterator() 메소드가 들어있다. 컬렉션에 있는 항목을 대상으로 반복작업을 수행하는 방법을 제공하는 forEach() 메소드가 기본으로 포함된다. [ 향상된 for 순환문 사용시 주의사항 ] 배열은 Iterable 인터페이스를 구현하지 않는다. [ 정리 ] 메뉴항목이 서로 다른 방식으로 구현되..
27일차헤드퍼스트 디자인패턴 [5주차_수요일] 361-373pg요약CHAPTER 09. 컬렉션 잘 관리하기 (feat. 반복자 패턴과 컴포지트 패턴)객체 저장방식을 보여 주지 않으면서도 클라이언트가 객체에 일일이 접근할 수 있게 해 주는 방법 [ 반복자 패턴 ]반복자 패턴이 Iterator 인터페이스에 의존한다는 사실!컬렉션 : 객체를 모아 놓은 것. 리스트, 배열, 해시테이블 같은 다양한 자료구조에 컬렉션을 보관할 수 있는데, 어떤 자료구조를 사용하든 결국 컬렉션은 컬렉션 (집합체라고 하기도 한다.)반복자를 사용하면 그 안에 들어있는 모든 항목에 접근할 수 있게 하려고 여러 메소드를 외부에 노출시키지 않으면서도, 컬렉션에 들어있는 모든 객체에 접근할 수 있습니다.반복자를 구현한 코드를 컬렉션 밖으로 끄..
26일차 헤드퍼스트 디자인패턴 [5주차_화요일] 346-360pg 요약 CHAPTER 08. 알고리즘 캡슐화하기 (feat. 템플릿 메소드 패턴) 서브클래스에서 언제든 필요할 때마다 알고리즘을 가져다가 쓸 수 있도록 캡슐화한다. [ 객체지향 원칙 추가+ ] 먼저 연락하지 마세요. 저희가 연락드리겠습니다. : 슈퍼클래스에서 모든 것을 관리하고 필요한 서브 클래스를 불러서 써야 한다. [ 객체지향 패턴 추가+ ] 템플릿 메소드 패턴 : 알고리즘의 골격을 정의한다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브 클래스에서 재정의 할 수도 있다. CHAPTER 09. 컬렉션 잘 관리하기 (feat. 반복자 패턴과..
25일차 헤드퍼스트 디자인패턴 [5주차_월요일] 335-345pg 요약 CHAPTER 08. 알고리즘 캡슐화하기 (feat. 템플릿 메소드 패턴) 서브클래스에서 언제든 필요할 때마다 알고리즘을 가져다가 쓸 수 있도록 캡슐화한다. [ 자바 API 속 템플릿 메소드 패턴 ] 템플릿 메소드 패턴은 정말 많이 쓰이는 패턴이다. 왜냐하면 프레임워크를 만드는데에 아주 좋은 도구임. 프레임워크로 작업이 처리되는 방식을 제어하면서도 프레임워크에서 처리하는 알고리즘의 각 단계를 사용자가 맘대로 지정할 수 있다. [ 템플릿 메소드로 정렬하는 법 (Arrays 클래스 속 템플릿 메소드) ] mergeSort() 메소드 : 템플릿 메소드 private static void mergeSort(Object src[], Objec..
24일차 헤드퍼스트 디자인패턴 [4주차_토요일] 317-334pg 요약 CHAPTER 08. 알고리즘 캡슐화하기 (feat. 템플릿 메소드 패턴) 서브클래스에서 언제든 필요할 때마다 알고리즘을 가져다가 쓸 수 있도록 캡슐화한다. [ Coffee 클래스와 Tea 클래스 추상화하기 ] 커피와 홍차 제조법의 알고리즘이 똑같다. prepareRecipe() 메소드 추상화하기 Coffe 클래스 : brewCoffeeGrinds(), addSugarAndMilk() Tea 클래스 : steepTeaBag(), addLemon() 커피를 우리다, 티백을 우리다 → brew() 설탕우유 추가, 레몬 추가 → addCondiments() [ 템플릿 메소드 패턴 ] prepareRecipe()는 템플릿 메소드이다. 이유1..
23일차 헤드퍼스트 디자인패턴 [4주차_금요일] 305-316pg 요약 CHAPTER 07. 적응시키기 (feat. 어댑터 패턴과 퍼사드 패턴) 실제와 다른 인터페이스를 가진 것처럼 보이도록 객체를 감싸면, 특정 인터페이스가 필요한 디자인을 다른 인터페이스를 구현하는 클래스에 적응시킬 수 있다. 객체를 감싸서 인터페이스 단순화하기 [ 객체 지향 원칙 추기 ] 진짜 절친에게만 이야기해야 한다. : 최소결합을 해야 한다 [ 객체 지향 패턴 추가 ] 어댑터 패턴 : 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와준다. 퍼사드 패턴 : 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어 줍니다. ..
22일차 헤드퍼스트 디자인패턴 [4주차_목요일] 294-304pg 요약 CHAPTER 07. 적응시키기 (feat. 어댑터 패턴과 퍼사드 패턴) 실제와 다른 인터페이스를 가진 것처럼 보이도록 객체를 감싸면, 특정 인터페이스가 필요한 디자인을 다른 인터페이스를 구현하는 클래스에 적응시킬 수 있다. 객체를 감싸서 인터페이스 단순화하기 [퍼사드 패턴 작동원리] 홈시어터 시스템용 퍼사드 만들기 홈시어터 구성요소 = 하나의 서브시스템으로 간주 watchMovie()는 서브시스템의 메소드를 호출해서 필요한 작업 처리 클라이언트 코드는 서브시스팀이 아닌 홈시어터 퍼사드에 있는 메소드 호출 watchMovie() 호출 : 조명, 스트리밍, 프로젝터 등등이 알아서 준비됨. 퍼사드를 쓰더라고 서브시스템에 접근 가능 퍼사드..
21일차 헤드퍼스트 디자인패턴 [4주차_수요일] 284-293pg 요약 CHAPTER 07. 적응시키기 (feat. 어댑터 패턴과 퍼사드 패턴) 실제와 다른 인터페이스를 가진 것처럼 보이도록 객체를 감싸면, 특정 인터페이스가 필요한 디자인을 다른 인터페이스를 구현하는 클래스에 적응시킬 수 있다. 객체를 감싸서 인터페이스 단순화하기 [실전에서 어댑터를 사용하는 예시] Enumeration : 컬렉션의 각 항목이 어떻게 관리되는지 신경 쓸 필요 없이 컬렉션의 모든 항목에 접근할 수 있다. Iterator : 컬렉션에 있는 항목에 접근하고, 그 항목을 제거할 수 있게 해 줌. Enumeration을 Iterator에 적응시키기 Enumeration은 remove()에 해당하는 기능을 제공하지 않음 → Unsu..
20일차 헤드퍼스트 디자인패턴 [4주차_화요일] 272-283pg 요약 CHAPTER 07. 적응시키기 (feat. 어댑터 패턴과 퍼사드 패턴) 실제와 다른 인터페이스를 가진 것처럼 보이도록 객체를 감싸면, 특정 인터페이스가 필요한 디자인을 다른 인터페이스를 구현하는 클래스에 적응시킬 수 있다. 객체를 감싸서 인터페이스 단순화하기 [객체지향 어댑터] 어떤 인터페이스를 클라이언트에서 요구하는 형태로 적응시키는 역할 기존 시스템 =/= 업체에서 제공한 클래스 기존시스템 -어댑터-업체에서 제공한 클래스 [Duck 객체가 모자라서 Turkey 객체를 대신 사용해야 함] TurkeyAdaptor 클래스 만들기. Duck turkeyAdaptor = new TurkeyAdapter(turkey); 칠면조 객체를 칠..
19일차 헤드퍼스트 디자인패턴 [4주차_월요일] 257-271pg 요약 CHAPTER 06. 호출 캡슐화하기 (feat. 커맨드 패턴) 메소드 호출을 캡슐화 한다. [ 여러 동작을 한 번에 처리하기 - 리모컨에 파티모드 추가 ] 다른 커맨드를 실행할 수 있는 새로운 종류의 커맨드를 만들어서 여러가지 커맨드를 한 번에 실행할 수 있을까? → 매크로 커맨드 만들어보기 매크로에 넣을 일련의 커맨드 만들기 on 커맨드 , off 커맨드용 배열을 만들고 필요한 커맨드를 넣는다. MacroCommand 객체를 버튼에 할당한다. [ 커맨드 패턴 활용 - 요청을 큐에 저장하기 ] 커맨드로 computation의 한 부분을 패키지로 묶어서 일급 객체 형태로 전달 할 수 있다. 그러면 시간이 지나도 그 computatio..