전체 글
CHAPTER 09.반복자 패턴과 컴포지트 패턴
반복자 패턴 이해를 위한 간단한 문제 제안PancakeHouseMenu라는 식당과 DinerMenu라는 식당이 있습니다. 두 식당은 별개의 식당입니다.우연히 두 식당은 식당을 합치기로 했고 이 과정에서 서로 메뉴를 수정하기 싫어하는 신경전이 펼쳐지게 됩니다. 메뉴 수정이 다른 이유는 아래처럼 PancakeHouseMenu식당과 DinerMenu 식당의 구현 방법이 다르기 때문입니다.public class PancakeHouseMenu implements Menu { ArrayList menuItems; // DinerMenu와 달리 PancakeHouseMenu는 배열을 통해 메뉴를 구현 public PancakeHouseMenu() { menuItems = new ArrayList(); addItem(..
CHAPTER 08.템플릿 메소드 패턴
템플릿 메소드 패턴 이해를 위한 간단한 문제 제안우리는 개발을 하다보면 비슷한 메소드에 비슷한 로직을 작성할 때가 있습니다.특히 아래와 같은 상황은 개발자들에게 최적화에 대한 욕망과 갈증을 뿜뿜하게 됩니다.스타버즈 커피 만드는 법물을 끓인다.끓는 물에 커피를 우려낸다.커피를 컵에 따른다.설탕과 우유를 추가한다.스타버즈 홍차 만드는 법물을 끓인다.끓는 물에 찻잎를 우려낸다.홍차를 컵에 따른다.레몬을 추가한다. 두 개의 레시피를 살펴보면 재료만 다르지 행동은 비슷한다는걸 알 수 있습니다.따라서 위의 레시피를 문맥 그대로 코드로 녹여낼 경우 반복적인 코드가 탄생할 것입니다.템플릿 메소드 패턴은 예시처럼 비슷한 로직을 템플릿화 하여 코드의 퀄리티를 높여주는 디자인 패턴입니다. 템플릿 메소드 패턴을 적용해보기위 ..
CHAPTER 07.어댑터 패턴과 퍼사드 패턴
어댑터 패턴 이해를 위한 간단한 문제 제안해외 직구를 통해 전자 제품을 구매했다고 가정하겠습니다.각 나라별로 사용되는 어뎁터 소켓이 다르기 때문에 변환기가 필요할 것입니다.일본은 110V를 사용하고 우리나라는 220V를 사용하는것이 예시가 될 수 있습니다.객체지향 코드에서도 위와 같은 비슷한 문제가 발생할 때가 있습니다.객체 인터페이스가 달라서 사용하지 못하는 경우가 예시가 될 수 있습니다.오리 인터페이스에 비슷한 칠면조 객체를 동작하도록 하고 싶은 문제 상황이라 가정해보겠습니다.이럴 경우 어댑터 패턴을 사용해 어떻게 해결하는지 살펴보겠습니다.어댑터 패턴을 사용하여 문제 해결해보기public interface Duck { public void quack(); public void fly(); }먼저 오리..