Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 실업인정인터넷신청
- 후니의쉽게쓴시스코네트워킹
- 사회초년생
- 전화영어
- 튜터링
- 캡쳐링
- array
- 네트워크
- 생애첫계약
- 취업사실신고
- 막대기자르기
- 정보처리기사개정
- 자취준비
- IT기초
- 회사폐업
- C++
- 청년내일채움공제
- 프로그래머스
- 부분합알고리즘
- 모여봐요동물의숲
- 실업급여
- 정보
- 동적계획법
- leetcode
- 알고리즘
- 코딩테스트
- HeadFirstDesignPatterns
- 후니의쉽게쓴시스코라우팅
- 순열
- 자료구조
Archives
- Today
- Total
따봉도치야 고마워
Head First Design Patterns : (1)디자인 패턴 소개 본문
디자인 패턴 소개
모든 패턴은 '시스템의 일부를 다른 부분과 독립적으로 변화시킬 수 있는' 방법을 제공하기 위한 것
디자인 원칙
- 애플리케이션에서 달라지는 부분을 찾고, 달라지지 않는 부분으로부터 분리한다.
- 구현이 아닌 인터페이스에 맞춰 프로그래밍한다. //여기서 인터페이스는 중의적 의미로 '상위 형식'을 의미함
- 상속보다는 구성을 활용한다.
스트래티지 패턴(Strategy Pattern) : SimUDuck 예제
- fly(), quack() 메소드를 슈퍼 클래스에 정의 시 : 해당 기능이 없어야 하는 서브 클래스는 매번 재정의 해줘야 함
- flyable, quackable 인터페이스를 서브 클래스에서 구현하도록 하면 : 코드 중복 발생
*패턴 적용
- 슈퍼 클래스에선 FlyBehavior, QuackBehavior 인터페이스 인스턴스 변수와 해당 변수를 통해 fly(), quack() 메소드를 호출
- 각 행동별로 행동 클래스 추가(FlyRocketPowerd, FlyWithWings...) + 해당 클래스들은 위의 인터페이스 구현
- 각 오리(서브클래스) 마다 기능에 맞춰 인스턴스 변수 초기화
ex) flyBehavior= new FlyWithWings();
*스트래티지 패턴
- 알고리즘 군을 정의하고 각각을 캡슐화해 교환해서 사용할 수 있도록 만드는 것. --> 예제에선 오리의 행동
- 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 가능
연필을 깎으며 (내 대답)
page 43
- A D F
- 실제 답 : A B D F
page 46
- 비슷한 기능을 구현하면서 코드 중복이 많아져서
page 52
1) 로켓 추진으로 나는 행동에 대한 클래스를 추가하고 FlyBehavior 인터페이스를 구현한다
2) 오리 소리가 필요한 곳
KEYWORD
패턴 카탈로그?
'나중에 어떻게 바뀔지'에 대해 생각하고 개발
'프로그래밍 > 공부' 카테고리의 다른 글
Head First Design Patterns : (3)데코레이터 패턴 (0) | 2020.09.11 |
---|---|
Head First Design Patterns : (2)옵저버 패턴 (0) | 2020.09.10 |
버블링(Bubbling)과 캡쳐링(Capturing) (0) | 2020.09.07 |
foreach/ map/ filter/ reduce/ some/ every 차이 (0) | 2020.08.05 |
MMORPG와 스포츠 게임 개발의 차이 (0) | 2020.07.20 |
Comments