디자인 패턴

    프로그래밍 Design Pattern 이해하기 - 12 컴파운드 패턴

    패턴들의 패턴들 (컴파운드 패턴) 같이 일하라! 패턴과 다른 패턴을 상호작용하며 사용하는 것을 바로 이 '컴파운드 패턴'이라고 부른다! 즉 컴파운드 패턴은, 패턴들을 사용하는 패턴이다. 즉 컴파운드 패턴은 특정 패턴이 아니라, 반복적으로 생길 수 있는 문제를 해결하기 위해 '두개 이상의 패턴을 결합'하여 사용하는 것을 의미한다. 우리는 이번 챕터를 통해 'SimUDuck'이라는 Duck simulator라는 예제를 만들어 볼 것이다. 패턴들을 결합해서 오리들을 만들 것이다. 많은 문제들에 이 패턴을 적용해서 문제를 풀 수 있다. 이 컴파운드 패턴이 모든 문제에 대한 정답이 될 순 없지만, 많은 문제들을 푸는데 도움이 되는 것은 확실하다. 자 이제 다시 오리 예제를 만들어보자. 첫번째로, 우리는 Quack..

    프로그래밍 Design Pattern 이해하기 - 9 이터레이터 패턴 & 컴포지트 패턴 <1>

    컬렉션을 잘 관리하자! - 이터레이터 패턴 & 컴포지트 패턴 컬렉션에는 굉장히 많은 객체들이 들어있다. 그리고 종류도 다양하다. List, Hashtable, ArrayList 등등...'루'와 '멜'은 저녁 요리사와 아침 팬케이크 요리사이다. 그들은, 둘이 메뉴를 합쳐 점심식사를 제공하기로 했다. 다음 MenuItem 클래스를 보자! 위 클래스는 MenuItem Contructor로 이름과 설명, 가격, 채소를 먹는지 여부에 대해 넣을 수 있으며, get함수를 통해 각각의 값을 가져올 수 있다. 위 클래스를 이용해서 아래와 같이 PancakeHouse 와 DinnerMenu 를 만들어보자. PancakeHouseMenu.java DinnerMenu.java 위 두 클래스를 보자. PancakeHouse..

    프로그래밍 Design Pattern 이해하기 - 4 팩토리 패턴

    팩토리 패턴 이번 시간엔 팩토리 패턴에 대해 알아보자. 이 한줄을 보자. MallardDuck을 Concreate Class라고 부른다. (abstract class를 상속받아 구체화된 객체를 Concreate class라고 부른다!) 위와같이 abstract class를 상속받아 서브클래싱을 하면, new MallardDuck();처럼. 이렇게 되면, runtime 도중에 Duck을 바꿀 수가 없게 된다. 쉽게 예를 들면 아래와 같이, 매번 상태에 따라 Duck을 바꿀 때 객체를 만들어야 하며, 수없이 많은 조건들이 생겨나게 된다! 이런 코드들이 많아지면, 앱을 유지보수하는데 굉장히 어려워지며 또한 잘못고쳤을 때 독립성이 유지되지 않아 에러가 많이 일어나게 된다. "new"의 잘못된 점은 무엇일까? 기..