Design Pattern

    [Design Pattern] Adapter Patter

    [Design Pattern] Adapter Patter

    Adapter Pattern은 wrapper라고도 많이 불립니다. 어댑터라는 용어는 많이 들어보셨을 겁니다. '돼지코' 를 크게 예로 들 수 있을텐데요. 위키피디아에 설명된 정의는 아래와 같습니다. 어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. Adapter 패턴은 기존에 지원하는 인터페이스 이외 다른 인터페이스 형태로 맞춰주기 위해 자주 사용됩니다. 클라이언트가 사용하는 타겟 인터페이스와 다른 인터페이스를 제공하는 모듈을 사용하고자 할 때 중간에 Adapter를 추가하여 기존에 사용하던 인터페이스와 동일한 형태로 제공받아 사용할 수 있습니다..

    [Design Pattern] Decorator Pattern

    [Design Pattern] Decorator Pattern

    Decorator Pattern의 SOLID의 OCP(Open Closed Principle)을 원칙으로 하는 Pattern입니다. Decorator Pattern은 예시로 바로 살펴보도록 하겠습니다. 아래 UML을 보시면 음료를 상속받아 각 커피를 구현하고 있는 형태입니다. 이 구조를 Decorator Pattern이 접목되며 변화하는 과정을 살펴보려합니다. Beverage 추상클래스를 상속받아 각 커피 클래스 만들었습니다. 이제 판매만 하면 될까요? 점점 고객들의 요구가 많아지고 있습니다. 우유를 추가해달라는 고객, 휘핑크림을 넣어달라는 고객 등 여러 요구사항에 맞춰주고 가격을 따로 받으려 합니다. 그럼 어떻게 해야하나요? 가장 단순한 방법은 아래와 같은 구조가 되는 것입니다. 아래 UML은 휘핑크림..

    [Design Pattern] Mediator Pattern

    Mediator Pattern의 목적은 명확합니다. 중간 관리자를 하나두어 문제를 해결하겠다는 것입니다.서로 커뮤니케이션하고자하는 객체들이 있을 때 상호작용하려는 객체들의 집합의 구조가 복잡할 때 복잡성을 해소하면서 커뮤니케이션이 가능하도록 하는 목적의 패턴입니다. 매우 복잡한 커뮤니케이션 관계가 존재할 때 중앙집중적인 관리가 필요할 때 사용된다고 보시면 됩니다. 이러한 Mediator Pattern의 공항 관제탑을 생각하시면 좀 더 이해가 쉬울 것 같습니다. 인천공항에 이,착률 하려는 모든 항공사의 항공기간 서로 커뮤니케이션을 직접적으로 하는것이 아니라 중앙에 위치한 관제탑에서 정보를 수집하고 데이터를 전달함으로써 이,착륙 시 발생할 수 있는 많은 문제를 해결하고 있습니다. 위 예시와 같이 Mediat..

    [Design Pattern] Iterator Pattern

    Iterator Pattern Iterator Pattern은 여러 객체를 보관하고 있는 Aggregate Object가 있을 때 각 구성요소 하나 씩 방문하고자 할때 사용됩니다. 이 때 각 Element 내부를 접근하는 등의 표현은 외부로 노출되지 않습니다. 여기서 Aggregate Object에 대해 정리를 하자면 특정 객체를 하나의 단위로 그룹화 할 목적으로 다른 객체를 포함하는 객체를 입니다. Iterator Pattern은 구성요소들의 순회가 필요하거나 순회를 위한 일관된 인터페이스가 필요할 때 사용합니다. 또한 전체 구성요소에 대해 모두 알 필요없이 각 구성요소에 접근하기 위해서 사용되기도 합니다. 'Head First Design Pattern' 도서에서 소개하고 있는 예시를 사용해 설명하려..

    [Design Pattern] Template Method Pattern

    Template method pattern 어느 식당에 들어가서 주문을 하려합니다. 이 식당에는 음식을 세트로 판매하고 있습니다. 세트 = 밥 + 국 + 메인반찬 + 추가반찬 위와 같이 세트는 4가지 메뉴로 구성이 되어있습니다. 밥 과 추가반찬은 동일하며 각 세트마다 국과 메인반찬이 변경된다고 합시다. 예를 들어 아래와 같이 세트들이 구성된다고 합시다. 제육세트 = 밥 + 된장국 + 제육볶음 + 추가반찬, 생선세트 = 밥 + 된장국 + 생선구이 + 추가반찬,해장세트 = 밥 + 콩나물해장국 + 해장에좋은반찬 + 추가반찬 여러분들이 각 세트를 선택함에 따라 국과 메인반찬이 변경됨을 알 수 있습니다. 위 상황을 여러분들이 디자인하고 구현한다고 생각해보시죠. 각 세트메뉴가 클래스가 되고 밥, 국, 메인반찬, 추..

    [DesignPattern] Singleton Pattern

    [DesignPattern] Singleton Pattern

    싱글톤 패턴! 단 하나만 존재하는 유일무이한 객체를 만들기 위한 패턴! 싱글톤 패턴을 정의하면 아래와 같습니다. 세상에서 단 하나뿐인 특별한 객체 단 하나뿐인 객체와 왜 필요하냐고 물으실 수 있으십니다. 하지만 용도는 무궁무진합니다. 디바이스를 위한 디바이스드라이버나 로그 기록용 객체, 대화상자, 스레드 풀 등등... 이런 형식의 객체는 2개 이상 만들게 되면 무엇인가 문제가 생기지요. 프로그램 상의 문제나 아니면 불필요하게 메모리만 덩그러니 차지하게 되는 그런 상황 말입니다. 사람들은 묻습니다. 그럼 전역변수를 쓰면 되지 않냐고요.하지만 싱글톤 패턴을 사용하는것이 전역변수를 사용하는 것보다 훨씬! 프로그램에 좋습니다. 전역변수를 사용하게 되면 프로그램이 시작되자마자 메모리 상에 생성되게 됩니다. 하지만..