design-pattern

본 포스트는 헤드퍼스트 디자인패턴을 읽고 정리한 글입니다. Ch4 팩토리 패턴 본 포스트는 아래 포스트에 이어지는 글입니다. [Design Pattern] 팩토리 메서드 패턴 (Factory Method Pattern) 본 포스트는 헤드퍼스트 디자인패턴을 읽고 정리한 글입니다. Ch4 팩토리 패턴 OverView 팩터리 패턴은 불필요한 의존성 없애 결합 문제를 해결한다. 모든 팩토리 패턴은 객체 생성을 캡슐화한다. roel-yomojomo.tistory.com Question: 원재료 공급 피자 가게의 모든 지점이 좋은 재료를 사용하도록 관리하는 시스템이 필요하다. 모든 지점에서 제품에 들어가는 재료군은 동일하지만, 지역마다 재료의 구체적인 종류는 조금씩 다르다. 재료군: 반죽, 소스, 치즈, 야채, 고..
본 포스트는 헤드퍼스트 디자인패턴을 읽고 정리한 글입니다. Ch4 팩토리 패턴 OverView 팩터리 패턴은 불필요한 의존성 없애 결합 문제를 해결한다. 모든 팩토리 패턴은 객체 생성을 캡슐화한다. 구상 클래스 의존성을 줄인다. → 네 번째 디자인 원칙, 느슨한 결합 구상 클래스가 아닌 추상 클래스와 인터페이스에 맞추어 코딩할 수 있다. 두 번째 디자인 원칙, 인터페이스에 맞추어 코딩하라. Question: 피자 가게 구축 메뉴를 유동적으로 추가/삭제 할 수 있는 피자 가게를 만들어야 한다. 단순 해결 입력 받은 피자 종류에 따라 피자 객체 인스턴스를 생성한다. public class PizzaStore { public Pizza orderPizza(String type) { Pizza pizza; if..
본 포스트는 헤드퍼스트 디자인패턴을 읽고 정리한 글입니다. Ch3 데코레이터 패턴 Question: 커피 주문 시스템 구축 기존 주문 시스템 클래스를 개선하여 다양한 음료를 모두 포괄할 수 있는 주문 시스템을 만들어야 한다. 기존 주문 시스템 cost: 음료 가격 description: 음료 설명 요구사항 옵션이 존재한다. 샷 추가, 우유, 휘핑 크림 등을 선택할 수 있다. 옵션을 추가할 때마다 가격도 추가된다. 임시방편 문제 해결 1 각 옵션 유무에 따라 클래스를 모두 생성하고, cost 메서드에서 최종 가격을 계산한다. Problem 특정 옵션의 가격이 인상되거나, 옵션 자체가 추가되면 모든 클래스를 일일이 확인 및 수정해야 한다. 지금까지 배운 4가지 디자인 원칙 중 어떤 것을 위반하고 있을까? 디..
본 포스트는 헤드퍼스트 디자인패턴을 읽고 정리한 글입니다. Ch2 옵저버 패턴 Question: 기상 스테이션 구축 현재 기상 조건(온도, 습도, 기압)을 추적하는 WeatherData 객체를 바탕으로 3개의 항목을 화면에 표시하는 애플리케이션을 만들어야 한다. 요구사항 3가지 디스플레이에 표시할 항목은 각각 현재 조건, 기상 통계, 기상 예보이다. 화면에 표시되는 항목은 WeatherData 객체에서 최신 측정치를 수집할 때마다 실시간으로 갱신된다. 날씨 디스플레이는 확장 가능해야 한다. WeatherData 객체 코드 채우기 public class WeatherData { // 인스턴스 변수 선언 CurrentConditionsDisplay currentConditionsDisplay = new Cu..
본 포스트는 헤드퍼스트 디자인패턴을 읽고 정리한 글입니다. Ch1 디자인 패턴 소개와 전략 패턴 전략 패턴 (Strategy Pattern) 알고리즘군을 정의하고 캡슐화하여, 실행 중에 알고리즘을 교체할 수 있게 하는 디자인 패턴이다. 변경 가능성이 있는 부분을 분리하여 인터페이스를 이용하여 캡슐화하고, 실행 중에 구현체를 선택하여 사용할 수 있도록 한다. Question 다양한 오리(Duck)을 만들고 싶다. 모든 오리는 각자 다른 모양(display)을 가지지만, 모두 꽥꽥 소리(quack)를 낼 수 있으며, 날(fly) 수 있다. 어떻게 구현할 수 있을까? 간단하게 생각해 보자면 Duck이라는 슈퍼 클래스를 두고, 이를 다양한 종류의 오리가 상속받도록 구현할 수 있을 것이다. Problem 하지만,..
두둥당
'design-pattern' 태그의 글 목록