Programming/Design Patterns
-
디자인 패턴 요약 정리Programming/Design Patterns 2010. 5. 3. 08:12
Head First Design Pattern 정리 요약 디자인 패턴 : 특정 컨텍스트 내에서 주어진 문제에 대한 해결책이다. 컨텍스트 : 패턴이 적용되는 상황으로 반복적으로 일어날 수 있는 상황이어야만 한다. 문제 : 그 컨텍스트 내에서 이루고자 하는 목적을 뜻합니다. 하지만 컨텍스트 내에서 생길 수 있는 제약조건도 문제에 포함됩니다. 해결책 : 바로 우리가 찾아내야 하는 것입니다. 누구든지 적용해서 일련의 제약조건 내에서 목적을 달성할 수 있는 일반적인 디자인을 뜻합니다. 객체지향 원칙 1. 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다. 2. 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. 3. 상속보다는 구성을 활용한다. 4. 서로 상호작용을 하는 객체 사이에서는..
-
팩토리 패턴Programming/Design Patterns 2010. 5. 3. 08:12
4. 팩토리 패턴 1. 간단한 팩토리 1.1 간단한 피자 팩토리를 만들기. 팩토리(Factory) : 객체 생성을 처리하는 클래스. 피자 객체 생성 간단한 피자 팩토리 //============================================== //피자 가게 운영을 위한 객체생성 //============================================== Pizza orderPizza(){ //추상 클래스, 인터페이스로는 직접 인스턴스를 만들 수 없다. Pizza pizza = new Pizza(); Pizza.prepare(); Pizza.bake(); Pizza.cut(); Pizza.box(); return pizza; } //============================..
-
옵저버 패턴Programming/Design Patterns 2010. 5. 3. 08:11
옵저버 패턴의 정의 옵저버 패턴(Observer Pattern)에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 자동으로 갱신되는 방식으로 일대다(one-to-many)의존성을 정의 한다. 어떤 객체의 상태를 느슨하게 결합된 다른 객체들한테 전달하기 위한 패턴이다. *한 객체의(주제) 상태가 바뀌면 그 객체에 의존하는 다른객체들(옵저버)에게 연락이 간다. *주제 이면서 옵저버 일수도 있다.(책에서는 출판사(주제)와 구독자(옵저버)를 예로 들었는데..구독자 이면서 동시에 출판사 일수도 있다.) 신문 구독 메커니즘만 제대로 이해할 수 있다면 옵저버 패턴을 쉽게 이해할 수 있다. 옵저버 패턴(Observer Pattern)에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들..
-
스트래티지 패턴Programming/Design Patterns 2010. 5. 3. 08:11
디자인패턴 1. 스트래티지 패턴(Strategy Pattern)이란? Strategy_Pattern.zip 예제 파일 알고리즘 군을 정의하고 각각을 캡슐화해서 교환해서 사용할 수 있도록 만든다. 스트래터지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 2.'문제에 대한 인지' 모든 것에 앞서서 현재 어떤문제가 있는지 깨닫는 과정은 정말 중요한 시간이다. 문제가 무엇인지 알아야 솔루션을 제공할것이 아닌가? 지금부터는 소스를 보면서 어떻게 '문제를 인지'하게 되는지 같이 살펴보자. 상황은 다음과 같다. 아래 그림과 같이 오리클래스로 부터 상속을 받은 2개의 오리가 있다 MallaaedDuck 와 RedHeadDuck 이 그것 이다. 이녀석들은 오리로 부터 상속을 받았기에..
-
데코레이터 패턴Programming/Design Patterns 2010. 5. 3. 08:10
3. 데코레이터 패턴 1. 스타버즈에 오신것을 환영 합니다. 1.1 처음 매장 오픈 스타버즈 커피는 엄청난 급속도로 성장한 초대형 커피 전문점으로 유명하다. 스타버즈 커피샵은 워낙 빠르게 생장했기 때문에 다양한 음료를 모두 포괄하는 주문시스템을 이제 갖추려고 한다. 처음 사업을 시작할 무렵에 만들어진 클래스는 아래와 같다. Beverage는 음료를 나타내는 추상 클래스이며, 커피샵에서 판매되는 모든 음료는 이 클래스의 서브클래스가 된다. 추상메소드인 cost()메소드를 새로 정의하여 가격을 구현한다. 처음에는 하우스블렌드, 다크로스트, 디카페인, 에스프레소 네 가지만 판매 하게 된다.. 커피를 주문할 때 스팀 우유나 두유, 모카를 추가하고, 그 위에 휘핑 크림을 얹기도 해야 한다면.. 클래스 개수가 말 ..