[Design Pattern] 생성 패턴 - 팩토리 메소드 패턴(Factory Method Pattern)
·
Computer Science/Design Pattern
이번에 살펴볼 디자인 패턴은 가장 유명한 디자인 패턴 중 하나인 팩토리 패턴(Factory Pattern)이다. 이 팩토리 패턴은 조금 더 구체적인 용어인 팩토리 메소드 패턴(Factory Method Pattern)으로도 알려져 있다. 팩토리 패턴에 대한 오해 많은 사람들이 팩토리 패턴을 객체 생성을 위한 클래스를 사용하는 것으로 알고 있다. 실제로 많은 글들을 보면 팩토리 패턴을 공장에 input을 넣으면 결과물이 나오는 구조를 설명해놓은 것이 대부분이다. 하지만 위 패턴은 팩토리 '패턴' 이 아니다. 그림으로보면 input에 따라 Factory 가 객체를 다르게 만들어주는 일종의 전략 패턴이라고 생각할 수 있다. 보통 많은 사람들이 위와 같이 팩토리 패턴을 생각하는데, 위와 같은 팩토리를 "심플 팩..
[Design Pattern] 구조 패턴 - 퍼사드 패턴(Facade Pattern)
·
Computer Science/Design Pattern
Facade Pattern 퍼사드 패턴(Facade Pattern)은 사용하기 복잡한 클래스 라이브러리에 대해 사용하기 편하도록 간편한 인터페이스(API)를 구성하기 위한 구조 패턴 이다. 예를들어 라이브러리의 각 클래스와 메서드들이 어떤 목적의 동작인지 이해하기 어려워 바로 가져다 쓰기에는 난이도가 높을때, 이에 대한 적절한 네이밍과 정리를 통해 사용자로 하여금 쉽게 라이브러리를 다룰수 있도록 인터페이스를 만드는데, 우리가 교제를 보고 필기노트에 재정리를 하듯이 클래스를 재정리하는 행위로 보면 된다. 본래 프로그램이라는 것은 업데이트를 통해 점점 커지게 된다. 버전이 올라갈수록 많은 클래스들이 만들어져 서로 관계를 맺으면서 점점 복잡해지게 된다. 그래서 커다란 솔루션을 구성하려면 상호 관련된 많은 클래..
[Design Pattern] 생성 패턴 - 빌더 패턴(Builder Pattern)
·
Computer Science/Design Pattern
Builder Pattern 빌더 패턴(Builder Pattern)은 복잡한 객체의 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴이다. 생성자에 들어갈 매개 변수를 메서드로 하나하나 받아들이고 마지막에 통합 빌드해서 객체를 생성하는 방식이다. 이해하기 쉬운 사례로 수제 햄버거를 들 수 있다. 수제 햄버거를 주문할때 빵이나 패티 등 속재료들은 주문하는 사람이 마음대로 결정한. 어느 사람은 치즈를 빼달라고 할 수 있고 어느 사람은 토마토를 빼달라고 할수 있다. 이처럼 선택적 속재료들을 보다 유연하게 받아 다양한 타입의 인스턴스를 생성할수 있어, 클래스의 선택적 매개변수가 많은 상황에서 유용하게 사용된다. 빌더 패턴 탄생 배경 점층적 생성자 패턴 점층적 생성자 패턴(Telesc..
[Design Pattern] 구조 패턴 - 브릿지 패턴(Bridge Pattern)
·
Computer Science/Design Pattern
브릿지 패턴(Bridge Pattern) 이란? 브릿지 패턴은 큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층구조​(추상화 및 구현)​로 나눈 후 각각 독립적으로 개발할 수 있도록 하는 구조 디자인 패턴이다. extend(상속) 보다 composition(합성) 을 적극 활용한다. 같은 말로는 아래와 같이 얘기할 수 있겠다. 구현(implementation)으로부터 추상(abstraction) 레이어를 분리하여 이 둘이 서로 독립적으로 변화할 수 있도록 한다." "구현부에서 추상층을 분리하여 각자 독립적으로 변형이 가능하고 확장이 가능하도록 한다. 즉 기능과 구현에 대해서 두 개를 별도의 클래스로 구현을 한다." "두개의 다른 계층(하나는 추상, 하나는 구현인 서로다른 계층의 커플링..
[Design Pattern] 행동 패턴 - 전략 패턴(Strategy Pattern)
·
Computer Science/Design Pattern
전략 패턴 (Strategy Patter) 이란 전략 패턴은 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴 이다. 여기서 '전략'이란 일종의 알고리즘이 될 수 도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다. 즉, 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이다. 전략 패턴 구성 요소 전략 패턴을 이루는 구성 요소는 다음과 같다. 전략 알고리즘 객체들(concrete strategy) : 알고리즘, 행위, 동작을 객체로 정의한 구현체 전략 인터페이스 : 모든 전략 구현제에 대한..
[Design Pattern] 구조 패턴 - 프록시 패턴(Proxy Pattern)
·
Computer Science/Design Pattern
프록시 패턴(Proxy Pattern)이란? 프록시(Proxy)를 번역하면 대리자, 대변인의 의미를 갖고 있다. 무엇인가를 대신 처리하는 의미라고 할 수 있다. 일종의 비서라고 생각하면 된다. 사장님한테 사소한 질문을 하기보다는 비서한테 먼저 물어보는 개념이라고 생각할 수 있겠다. 이렇게 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조 하는것이 아니라, 해당 객체를 대행(대리, proxy)하는 객체를 통해 대상객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고 또한 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있다. 더보기 구조 패턴(Structural Pattern)이란? 구조 패턴이란 작은 클래스들을 상속과 합성을..