본문 바로가기

디자인 패턴12

프록시 패턴 Proxy Pattern 프록시(Proxy)는 '대리'라는 의미를 가지고 있습니다. 지금까지 배웠던 패턴들의 내용이 이름을 따라서 동작했으므로 우리는 프록시 패턴도 무언가를 대리하는 패턴임을 알 수 있습니다. 1. 프록시 패턴 소개 프록시 패턴은 실제 시능을 수행하는 객체를 대신해서 프록시 객체가 기능을 대신 수행해 주는 패턴입니다. 그런데 뭔가 대리로 기능을 수행하는 경우가 잘 떠오르지는 않습니다. 우리는 프록시 객체를 다음과 같은 두 가지 상황에서 이용하게됩니다. 실제 기능을 하는 객체가 자원을 많이 소모하는 경우 실제 객체에 대해서 접근 제어가 필요한 경우 2. 프록시 패턴 구현 프록시 패턴은 간단하게 뼈대만을 가지고 구현해 보겠습니다. 개인적으로 예를 들어서 구체적으로 설명을 처음 들었을 때 긴가민가 했던 경험이 있어서 .. 2021. 10. 2.
스테이트 패턴 State Pattern State는 상태라는 의미를 가지고 많이 쓰이는 단어입니다. 이처럼 상태에 따라 객체를 변환할 때 이용하는 패턴이 스테이트 패턴입니다. 1. 스테이트 패턴 스테이트 패턴은 객체 내부의 상태에 따라 동작을 변환할 때 이용하는 패턴입니다. 스테이트 패턴을 이용하면, 객체에 대해 여러 동작을 정의할 때 스테이트 객체만 수정, 추가하면 됩니다. 또한 스테이트 패턴을 사용하지 않을경우 조건문 등을 이용해서 동작을 제어해야하는데 스테이트 객체를 이용함으로써 클래스 코드가 간단해집니다. 단, 상태에 따라서 스테이트 객체가 증가하기 때문에, 동작이 많아질 경우 스테이트 객체가 늘어난다는 단점도 갖고 있습니다. 2. 스테이트 패턴 구현하기 오락실이나 뽑기 기계 근처에 가면 항상 동전 교환기계가 있습니다. 이 기계는 스테.. 2021. 9. 29.
이터레이터 패턴 Iterator Pattern 이터레이터(iterator)는 반복자라는 의미를 가지고 있습니다. 그 이름처럼 반복에 대한 문제를 해결해주는 디자인 패턴입니다. 1. 이터레이터 패턴 이터레이터 패턴의 소개는 다음과 같이 합니다. 컬렉션의 구현 방법을 외부에 노출시키지 않으면서, 그 컬렉션 내부의 모든 항목에 대하여 접근할 수 있도록 하는 패턴이다. 조금 더 쉬운 말로 풀어보자면, 동작을 어떻게 하는지는 몰라도 내부의 항목에 대해서 반복 작업이 가능하다라고 할 수도 있습니다. 가장 좋은예는 어떤 코드에 배열과 리스트가 혼합되어 있습니다. 둘 다 인덱스를 이용하고, 여러개의 데이터를 저장한다는 공통점이 있는데 접근방법은 조금 다릅니다. 이때 이터레이터 패턴을 이용하면 동일한 인터페이스를 이용해서 배열이든 리스트이던 모든 데이터에 접근할 수.. 2021. 9. 26.
템플릿 메소드 패턴 Template Method Pattern 템플릿(Template)은 형판, 형틀이라는 뜻을 가지고있습니다. 형판이라는 것은 어떤 것을 만들기 위해서 미리 모양을 새겨 놓은 판을 말합니다. 1. 템플릿 메소드 템플릿이 형틀이라는 의미를 갖고 있듯이, 템플릿 메소드 패턴은 특정 기능을 형틀처럼 캡슐화 하여 이용하는 기능입니다. 이때 템플릿을 추상클래스로 정의하여 하위클래스에서 상속하여서 이용하게 됩니다. 이처럼 추상화시키는 메소드들은 공통된 알고리즘이나 구조를 추상화 시키게 됩니다. 2. 템플릿 메소드 구현하기 쿠키 가게가 있습니다. 이 가게에서는 초코 쿠키와 시나몬 쿠키를 판매하는데 다음과 같은 방식으로 제조를 합니다. public class ChocolateCookie { public void orderCookie(){ knead(); baki.. 2021. 9. 23.
퍼사드 패턴 Façade Pattern 퍼사드(Façade)란 프랑스어로 건물의 출입 외벽을 의미합니다.아래 그림처럼 건물 외관에 대한 디자인을 의미합니다. 이처럼 퍼사드 패턴은 건물 외벽으로 전체를 간략하게 나타내주는 패턴입니다. 1. 퍼사드 패턴 퍼사드 패턴은 어떤 객체에 대해 서브 시스템들의 통합된 인터페이스를 제공하는 패턴입니다. 퍼사드를 이용해서 서브 시스템에 쉽게 접근할 수 있게됩니다. 다시말하자면, 통합된 인터페이스 서브 시스템에 대해 쉬운 접근을 하게 해주는 패턴이 퍼사드 패턴입니다. 2. 최소 지식 원칙 최소 지식 원칙은 정말 가까운 친구 사이에서만 상호작용을 허용한다는 원칙입니다. 이 원칙은 객체를 만들면 그 객체와 상호작용을 하게될 클래스의 수와 방식에 주의를 기울여야 합니다. 그러니까 객체들 끼리 복잡하게 얽혀서 보수과정.. 2021. 9. 20.
어댑터 패턴 Adapter 패턴 다른 패턴 이름들과 다르게 어댑터라는 이름은 실생활에서도 많이 들어봤을 것입니다. 특히 110v 전압을 쓰는 나라에 여행을 가게 될 때는 우리가 110v어댑터라는 것을 껴서 우리가 사용하는 220v에서 전환을 합니다. 1. 어댑터 패턴 소개 서론에서 언급했듯이 보통 어댑터를 전압에 따라 교체합니다. 스마트폰 충전기도 태블릿이냐 노트북이냐에 따라서 20w 어댑터로 교체하고 50w 어댑터로 교체하기도 하고 하죠. 이처럼 어댑터를 우리 입맛에 맞춰서 바꿔서 이용합니다. 디자인 패턴의 어댑터 패턴도 사용자의 입맛에 맞춰서 쓸 수 있게 해줍니다. 어댑터 패턴은 인터페이스를 사용자가 원하는 기능에 맞도록 변화시켜주는 패턴입니다. 위의 예시에서 콘센트와 전자 제품은 객체고 어댑터가 인터페이스가 되는 것 입니다. 콘센.. 2021. 9. 19.
300x250