State Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #12 - 스테이트(state) Pattern 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있습니다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있습니다. 음료수 자판기와 같은 vending machine을 설계할 때, 스테이트 다이어그램을 그려봤을 겁니다. 이러한 경우에 사용하는 디자인 패턴입니다. 중첩된 if문으로 각각의 상태를 체크하는 대신, 각각의 상태를 구상 클래스로 정의해서 사용하는 방식입니다. 클래스의 개수가 많아질 수 있다는..
Composite Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #11 - 컴포지트(composite) Pattern 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조를 만들 수 있습니다. 이 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(composite)를 똑같은 방법으로 다룰 수 있습니다. 트리 구조를 살펴보면 노드(node)와 잎(leaf)으로 구성되어 있는 것을 알 수 있습니다. 이러한 노드와 잎을 한가지 형태로 표현할 수 있도록 구성되어 있는 것이 컴포지트 패턴입니다...
Iterator Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #10 - 이터레이터(iterator) Pattern 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해주는 방법을 제공합니다. 반복적으로 처리해야 하는 것을 통합해 주는 패턴입니다. 배열, ArrayList, Hashtable등의 리스트 처리 방식이 모두 다릅니다. 이런 것을 iterator 패턴을 이용하면 동일한 방식으로 처리할 수 있습니다. 배열의 경우에는 직접 구현해 주어야 하지만, ArrayList나 H..
Template Method Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #9 - 템플릿 메소드 (Template Method) Pattern 템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있습니다. 알고리즘의 템플릿 즉, 틀을 만들기 위한 패턴입니다. 추상클래스를 만들어 두고, 여기에 templateMethod를 둡니다. temp..
Adapter & Facade Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #8 - 어댑터(Adapter) Pattern 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다. 흔히 11자형 플러그와 돼지코 플러그의 상호 어댑터를 연상하면 쉬울 겁니다. 간단히 클래스 다이어그램을 살펴보시기 바랍니다. - 클라이언트에서는 타겟 인터페이스만 볼 수 있습니다. - 어댑터에서 타겟 인터페이스를..
Singleton Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #6 - Singleton Pattern 싱글턴 패턴 (Singleton Pattern)은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 인스턴스에 접근할 수 있도록 하기 위한 패턴입니다. 가장 널리 사용하는 디자인 패턴이 아닌가 합니다. 굳이 디자인 패턴을 모르더라도 자바 프로그래밍에서 자주 사용하기도 하죠~~ 싱글턴 패턴은 클래스에서 자신의 단 하나뿐인 인스턴스를 관리하도록 만들면 됩니다. 그리고 다른 어떤 클래스에서도 자신의 인스턴스를 추가로..
Abstract Factory Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #5 - Abstract Factory Pattern 추상 팩토리 패턴에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있습니다. 디자인 원칙 1. 추상화된 것에 의존하도록 만들어라. 구상 클래스에 의존하도록 만들지 않도록 한다. 추상 팩토리 패턴을 사용하면 클라이언트에서 추상 인터페이스를 통해서 일련의 제품들을 공급받을 수 있습니다. 이때, 실제로 어떤 제품이 생산되는지는 전혀 알 필요도..