본문 바로가기

Design Pattern

(11)
Adapter Pattern ③ 마무리하며.. 어댑터 패턴에 대해서 간략히 알아봤는데요.. 어댑터 패턴이라는 놈을 멋있게 표현하면... (그럴싸하게;;;) 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다.라고 책에서 정리를 하고 있습니다. 그러면.. 제가 만든 예제 소스 다이어 그램 말고.. -ㅅ- 보편적으로 사용되는 어댑터 패턴 클래스 다이어그램을 살펴보도록 하겠습니다. 완전 대따!!! 간단합니다... 'ㅡ' ㅋㅋㅋㅋ 일단 총 4가지의 클래스 및 인터페이스를 확인 할 수 있는데요.. 1. Client 2. IService 3. Adapter 4. Adaptee총 4가지가 있습니다. Client는 말 그대로 어떠..
Command Pattern ② Implements Command Pattern 음.. 실제로 음료를 주문한다고 생각하고 소스코드를 한번 작성해 봤습니다. -ㅅ- 개념적으로 설명하면 공부도 안될뿐 더러;; 제대로 해야겠다는 생각이 듭니다.. 사실 이 패턴 공부하면서 ㅠㅠ 잘 모르겠어요.. 갑자기 안하던 공부를 할려니까 머리가 막 아프로 그러네요 -ㅅ- ㅋㅋㅋㅋㅋ 일단 다이어 그램을 그렸습니다. 'ㅡ';; Amondo 로 그렸습니다. 음료를 주문하는 절차를 가진 커맨드 패턴 예제 소스를 만들었는데요.. 먼저 음료라는 추상클래스가 있고 소주, 맥주, 사이다, 콜라 있습니다 -ㅅ-;; 더 추가 하면 되겠죠.. order() 라는 메소드를 오버라이드 해서... 뭐 시켰습니다 라는 메세지가 뜨도록 해놨구요.. Command 인터페이스와 Command 객체인 BeverageOnCommand 라..
Command Pattern ① Command의 개념 책에서는 커맨드 패턴에 대해서 설명하기를 마치 음식을 주문하는 것과 같다고 이야기 하는군요.. 뭐 음식을 주문하는 과정을 살펴보면.. 아래와 같겠죠.. 1. 손님이 웨이터에게 주문을 합니다. 2. 작성한 주문서를 웨이터는 카운터에 가져다 줍니다. 3. 주방장이 주문서대로 음식을 만듭니다. 그림으로 그려보면 아래와 같습니다. 말로 풀어서 설명을 해보자면.. 손님이 주문을 생성하면 주문서가 작성이 되구요. 작성된 주문서를 종업원이 받아서 주방장에게 전해주면 주방장은 주문서에 있는 대로 음식을 만드는 일을 하는 거죠.. 손님 입장에서는 원하는데로 주문을 요청하고 종업원은 단순히 주방장에게 주문이 들어왔다는 것만 알려주면 되구요.. 주방장은 주문이 들어올때 주문서에 있는 내용 그대로 음식을 만드는 일을 하면 됩..
Singleton Pattern 싱글턴 패턴에 대해서는 배워본적이 있습니다. Agile Java 책에도 간간히 다루고 있습니다.. 워낙 순서 없이 가는 책인지라.. 이것저것 들어본건 많아서 좋긴하네요. 일간 이름이 생소하지 않으니까 막연한 두려움이 없는거 같아요. 일단 싱글턴 패턴에 대해서는 간단하게 정의하자면 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴 이라고 정의가 되어있습니다. 이 전의 어느 패턴보다도 말을 들었을때 이해가 쉬운 패턴이네요. 다시 말하면 한개의 객체만이 필요한 경우에 사용하는 패턴이라고 볼 수 있겠습니다. 두개의 이상의 객체가 생기면 안되는 경우에 싱글턴 패턴을 사용하면 좋겠지요. 일단은 여러개의 객체가 만들어지지 않을려면?? new 연산자를 사용하여 객체..
Factory Method Pattern ② 팩토리를 패턴으로! 일단 객체를 생성하는 클래스라는 명목으로 팩토리 클래스에 대해서 배웠는데.. 그럼 패턴은 어디있는 것일까.. -_-; 먼저 이전에 보이던 다이어그램을 살펴보면 유닛을 생산하는(객체를 생성하는) 팩토리가 단 한개 뿐입니다. 게이트웨이에서만 유닛을 생산하지는 않죠. (스타에서 -_-;;) 게이트웨이 이 외에도 로보틱스 퍼실리티도 있고, 스타게이트도 있으니 추가를 시켜 줘야겠군요. 그러면 프로토스 유닛의 서브클래스들도 많아 지겠구요.. 일단 책에서는 팩토리 메소드 패턴을 공식적으로 이렇게 말하고 있습니다. 팩터리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만듭니다. 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브..
Factory Method Pattern ① Simple Factory 책을 시작하면서 new에 대한 고찰이 나옵니다. 처음에 스트레티지 패턴을 배우면서 나왔던 디자인 원칙 중에 하나죠, 특정 구현보다는 인터페이스를 바탕으로 프로그래밍 한다는 원칙입니다. 하지만 new를 사용하는 것 자체가 결국은 특정 구현을 사용하는것이라는 내용입니다. 스타크래프트 좋아하시죠? 프로토스 유닛들 여러가지가 있습니다. 이걸 인퍼테이스 라고 합시다. 그러면 이 프로토스 유닛을 구현하는 구상 클래스들에는 질럿이나 드라군, 프로브, 캐리어 등등 뭐 여러가지가 있겠지요, 이렇게 구상 클래스들이 많은 경우에는 조건문을 사용해서, 특정 유닛을 생성해 줘야겠지요. 이 조건문을 사용한 부분을 변하는 부분이라고 할 수 있습니다. 특히나 객체 생성을 처리하는 클래스를 팩토리(Factory) 라고 부른다고 하는데..
Decorator Pattern ③ 적용 및 정리 일단은 데코레이터 패턴에 대한 정의는 이렇습니다. 테코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. -_-; 당췌 뭐라고 하는건지 알수가 없네요.. 역시나 말로 하는것보다는 그림으로 보면서 이해하는편이 훨씬 빠를것 같다는 생각이 듭니다. 뭔가 정의 내리는 건 책에서도 처음부터 하고 있지 않는걸 보니 정의는 언제나 그럴싸 하기때문에 온갖 어려운 미사여구로 장식되어 있기 때문에 와닿지 않는 것 같네요. 그럼 멋진말 다 뒤집어 엎고 이해하기 위해서.. 다른방법으로 접근을 합시다! 인터넷을 통해서 아래와 같은 다이어그램을 구할 수 있었습니다. 이것이 데코레이터 패턴의 일종의 모형이라고 볼수가 있는데요. ..
Decorator Pattern ① 문제점의 시작 데코레이터 패턴 공부를 하면서, 영화표를 파는 걸 한번 만들어 보자.. 생각했습니다. 일단 클래스를 만들어 봤는데요.. 개괄적인 클래스의 모습이 이러했습니다. 'ㅅ' ㅋㅋ 아주 간단합니다. 그냥 연령별로 티켓을 만들어 주면되구요.. 가격이라던가, 어떤 연령대의 티켓인지만 알수 있으면 되죠.. 굉장히 간단하구나.. 생각했는데 하나 의문점이 들었습니다. 보통 영화관에서는 카드로 할인을 해주는데.. 이런 할인 서비스를 구현하기 위해서는 어떻게 해야될까?? 생각했습니다. 또, 이런 할인이 중복되어서 할인이 되는 경우를 생각해봤습니다. -_-;; 4가지의 형태(일반, 청소년, 경로, 아이) 의 티켓 요금이 존재하고, 또 할인되는 경우가 3가지 라면.... 머릿속이 복잡합니다.. 계산을 해보니 약 32개의 클래스가..