일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- docker
- 클린코드
- 개발자
- 객체지향
- Linux
- IntelliJ
- 디자인패턴
- 성수직장인
- 깨끗한코드
- 성수맛집
- 직장인
- 헤드퍼스트디자인패턴
- 성수
- DesignPattern
- JavaScript
- 상속
- 직장인점심
- 오브젝트
- 주니어개발자
- 독서
- 성수볼거리
- 코딩
- 책읽기
- 객체지향프로그래밍
- JAVA개발자
- 헤드퍼스트
- 독서일지
- 성수핫플
- Today
- Total
목록책책책 책을 읽읍시다‼ ver.개발/[ 헤드퍼스트 디자인패턴 ] (48)
닭발개발
38일차 헤드퍼스트 디자인패턴 [7주차_화요일] 503-513pg 요약 **CHAPTER 11. 객체 접근 제어하기 (feat. 프록시 패턴)** 사람들이 좋은 경찰에 접근하는 일을 나쁜 경찰이 제어한다. 패턴에서 나쁜 경찰은 프록시(proxy)이다. 접근을 제어하고 관리한다. [ 동적 프록시를 활용하여 보호 프록시 만들기 ] - java.lang.reflect 패키지에 프록시 기능이 내장되어 있다. - java.lang.reflect 패키지 사용하면 즉석에서 하나 이상의 인터페이스를 구현하고, 지정한 클래스에 메소드 호출을 전달하는 프록시 클래스를 만들 수 있다. - 동적 프록시(dynamic proxy) : 진짜 프록시는 실행 중에 생성되는 자바 기술 - 자바에서 Proxy 클래스를 생성해주고, Pr..
37일차 헤드퍼스트 디자인패턴 [7주차_월요일] 488-502pg 요약 **CHAPTER 11. 객체 접근 제어하기 (feat. 프록시 패턴)** 사람들이 좋은 경찰에 접근하는 일을 나쁜 경찰이 제어한다. 패턴에서 나쁜 경찰은 프록시(proxy)이다. 접근을 제어하고 관리한다. [ 신나는 프록시의 하루 - 프록시의 일 처리과정 살펴보기 ] 1. CEO 모니터링 시작 -> GumballMonitor는 뽑기 기계 원격 객체의 프록시를 가져옴 -> getState(), getCount(), getLocation() 호출 2. 프록시의 getState() 호출 -> 프록시는 이 호출을 원격 서비스로 전달 -> 스켈레톤을 그 요청을 받아서 뽑기기계에 전달 3. GumballMachine은 스켈레톤에게 상태를 리턴..
36일차 헤드퍼스트 디자인패턴 [6주차_토요일] 475-487pg 요약 **CHAPTER 11. 객체 접근 제어하기 (feat. 프록시 패턴)** 사람들이 좋은 경찰에 접근하는 일을 나쁜 경찰이 제어한다. 패턴에서 나쁜 경찰은 프록시(proxy)이다. 접근을 제어하고 관리한다. [ RMI 레지스트리 ] - 클라이언트는 스텁 객체(프록시)를 가져와야 한다. 거기에 있는 메소드를 호출해야 하기 때문에. - 클라이언트는 룩업(lookup)으로 스텁 객체를 요청한다. (이름을 건네주면서 그 이름에 맞는 스텁 객체를 요구하는 것) 1. 클라이언트에서 RMI 레지스트리 룩업 Naming.lookup("rmi://127.0.0.1/RemoteHello"); 2. RMI 레지스트리에서 스텁 객체 리턴. (이 때, 스텁..
35일차 헤드퍼스트 디자인패턴 [6주차_금요일] 464-474pg 요약 **CHAPTER 11. 객체 접근 제어하기 (feat. 프록시 패턴)** 사람들이 좋은 경찰에 접근하는 일을 나쁜 경찰이 제어한다. 패턴에서 나쁜 경찰은 프록시(proxy)이다. 접근을 제어하고 관리한다. [ 원격 프록시의 역할 ] - 원격 객체의 로컬 대변자 역할 - 원격 객체 : 다른 자바 가상 머신의 힙에서 살고 있는 객체(다른 주소 공간에서 돌아가고 있는 객체) - 로컬 대변자 : 로컬 대변자의 어떤 메소드를 호출하면, 다른 원격 객체에게 그 메소드 호출을 전달해주는 객체 - 클라이언트 객체는 프록시를 활용하는 객체다 : 클라이언트 객체는 원격 객체의 메소드 호출을 하는 것처럼 행동한다. 하지만 실제로는 로컬 힙에 들어있는 ..
34일차 헤드퍼스트 디자인패턴 [6주차_목요일] 453-463pg 요약 **CHAPTER 10. 객체의 상태 바꾸기 (feat. 상태패턴)** 전략패턴과 상태패턴은 꽤나 다르지만 밑 바탕의 설계는 거의 같다. 어릴적 헤어진 쌍둥이처럼 [ 객체지향 패턴 추가 + ] - 상태패턴 : 내부 상태가 바뀜에 따라 객체의 행동이 바뀔 수 있도록 해준다. 마치 객체의 클래스가 바뀌는 것 같은 결과를 얻을 수 있다. **CHAPTER 11. 객체 접근 제어하기 (feat. 프록시 패턴)** 사람들이 좋은 경찰에 접근하는 일을 나쁜 경찰이 제어한다. 패턴에서 나쁜 경찰은 프록시(proxy)이다. 접근을 제어하고 관리한다. [ 뽑기 기계 재고와 현재 상태 파악하는 기능 추가 ] - 원격으로 파악하고 싶다는 CEO -> 원..
33일차 헤드퍼스트 디자인패턴 [6주차_수요일] 440-452pg 요약 **CHAPTER 10. 객체의 상태 바꾸기 (feat. 상태패턴)** 전략패턴과 상태패턴은 꽤나 다르지만 밑 바탕의 설계는 거의 같다. 어릴적 헤어진 쌍둥이처럼 [ 상태 패턴(State Pattern) 정의 ] 상태 패턴을 사용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 상태를 별도의 클래스로 캡슐화한 다음 현재 상태를 나타내는 객체에게 행동을 위임하므로 내부 상태가 바뀔 때 행동이 달라지게 된다는 사실을 쉽게 알 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. [ 상태 패턴 vs 전략 패턴 ]상태 패턴상태 객체에 일련의 행동이 캡슐화 된다.Context 객체를 생성할 때 초기 상태..
32일차 헤드퍼스트 디자인패턴 [6주차_화요일] 428-439pg 요약 **CHAPTER 10. 객체의 상태 바꾸기 (feat. 상태패턴)** 전략패턴과 상태패턴은 꽤나 다르지만 밑 바탕의 설계는 거의 같다. 어릴적 헤어진 쌍둥이처럼 [ 새로운 디자인 구상 ] 기존코드를 그대로 활용, 상태 객체들을 별도의 코드에 넣고 어떤 행동이 일어나면 현재 상태 객체에서 필요한 작업을 처리 - state 인터페이스, state 클래스 구현 - 뽑기 기계 코드 : 상태 객체 사용하는 방식으로 변경 - 각 상태의 행동을 별개의 클래스로 국지화 - if 선언문들 없앰 - 각 상태들은 변경에는 닫혀있고, 뽑기기계 클래스는 새로운 상태 클래스를 추가하는 확장에는 열려있다. (OCP)
31일차 헤드퍼스트 디자인패턴 [6주차_월요일] 415-427pg 요약 **CHAPTER 10. 객체의 상태 바꾸기 (feat. 상태패턴)** 전략패턴과 상태패턴은 꽤나 다르지만 밑 바탕의 설계는 거의 같다. 어릴적 헤어진 쌍둥이처럼 [ 상태 다이어그램으로 상태 기계 구현하기 ] - 상태들 변수로 만들기 - 행동 모으기 : 메소드로 만들기 -> 뽑기기계 코드 수정 : 10번에 1번꼴로 손잡이를 돌릴 때 알맹이 2개가 나오도록 -> 수정하려니 코드를 모두 고쳐야 함 -> 원칙 적용하기 1. 바뀌는 부분은 캡슐화한다. 2. ‘구성’을 활용한다.
30일차 헤드퍼스트 디자인패턴 [5주차_토요일] 399-414pg 요약 **CHAPTER 09. 컬렉션 잘 관리하기 (feat. 반복자 패턴과 컴포지트 패턴)** - 객체 저장방식을 보여 주지 않으면서도 클라이언트가 객체에 일일이 접근할 수 있게 해 주는 방법 [ 컴포지트 패턴 ] - 컴포지트 패턴에서는 단일 역할 원칙을 깨는 대신 투명성을 확보하는 패턴이다. - 투명성(transparency) - Component 인터페이스에 자식들을 관리하는 기능과 잎으로써의 기능을 전부 넣어서 클라이언트가 복합 객체와 잎을 똑같은 방식으로 처리할 수 있도록 만들 수 있다. 어떤 원소가 복합 객체인지 잎인지가 클라이언트에게는 투명하게 보인다는 점. - 부분-전체 계층구조를 가진 객체 컬렉션에서 그 객체들을 모두 똑같..
29일차 헤드퍼스트 디자인패턴 [5주차_금요일] 387-398pg 요약 CHAPTER 09. 컬렉션 잘 관리하기 (feat. 반복자 패턴과 컴포지트 패턴) 객체 저장방식을 보여 주지 않으면서도 클라이언트가 객체에 일일이 접근할 수 있게 해 주는 방법 [ 반복자와 컬렉션 ] Collection 인터페이스에서 Iterable 인터페이스를 구현한다. Collection 인터페이스를 구현하는 클래스라면 언제든 iterator() 메소드로 필요한 반복자를 받아올 수 있다. HashMap()은 반복자를 간접적으로 지원하는 클래스 : HashMap에는 2개의 객체 모듬이 들어있다. 하나는 keys이고 다른 하나는 values, 그러나 값들을 대상으로 반복작업을 하고 싶다면 먼저 HashMap에서 values를 가져온..