코딩하는 대학생의 책 추천/헤드퍼스트 디자인패턴

코딩하는 대학생에서 개발자까지
디자인 패턴 #3 데코레이터 패턴(Decorator Pattern)
이 글을 읽고 계시는 여러분을 유명한 햄버거 체인의 백엔드 직원으로 상상해 봅시다. 문제 상황 맥도날드, 롯데리아, 버거킹만 해도 햄버거의 다양성이 상상을 초월합니다. 그리고 햄버거에는 패티 추가, 양상추 추가, 양파 빼기 등 수많은 옵션들이 있습니다. 어느 날 여러분에게 온라인 햄버거 주문 시스템을 개발하라는 지시가 내려졌습니다. 이런 상황에서 여러분은 어떻게 이러한 다양한 햄버거를 구현할 것인가요? 아마 데코레이터 패턴을 알지 못하시는 분들은 "공통 인터페이스를 만든 뒤, 구현하면 되죠!!"라고 말씀을 하실 것이라고 생각됩니다. 밑의 그림은 책에 나온 예시입니다. 비록 햄버거는 아니었지만 커피를 예시로 다이어그램을 그린 그림입니다. 정말 수많은 클래스들이 하나의 인터페이스를 구현하는 모습을 볼 수 있..
디자인 패턴 #2 옵저버 패턴(Observer pattern)
옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 갱신되는 방식으로 일대다(one to many) 의존성을 정의합니다. 옵저버 패턴이란? 이 글을 보시는 독자 여러분의 이해를 돕기 위해 신문과 구독자라는 예시를 들어 설명하겠습니다. 신문을 Subject로 생각하고 구독자를 Observer로 생각하시면 편합니다. 신문은 매일 정보가 바뀌며 구독자들은 바뀐 정보를 자동적으로 받습니다. 이처럼 옵저버 패턴은 Subject(신문)이라는 객체의 정보가 바뀌면 Observer(구독자)에게 연락이 가고 자동적으로 정보가 갱신되는 패턴입니다. 옵저버 패턴을 사용하는 경우 / 사용해야 하는 경우 책에서는 기상 모니터링 애플리케이션 도메인을 설명하면서 옵저버 패턴을 설명하였습니..
디자인패턴 #1 전략 패턴 (Strategy Pattern)
전략 패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해 줍니다. 전략 패턴을 사용하는 경우 / 사용해야 하는 이유 abstract class Duck { // 일반 메서드 quack public void quack() { System.out.println("Quack! Quack!"); } // 일반 메서드 swim public void swim() { System.out.println("Swimming gracefully."); } // 추상 메서드 display public abstract void display(); } 클래스 설명을 하자면, Duck이라는 슈퍼 클래스에서 quack 및 swim 메서드가 정의되어 있고, display 메서드는 추상 메서드로 정의되어..
코딩하는_대학생
'코딩하는 대학생의 책 추천/헤드퍼스트 디자인패턴' 카테고리의 글 목록