본문 바로가기

디자인패턴

(4)
[디자인패턴] 데코레이터 패턴 이번 글에서는 데코레이터 패턴에 대해서 알아보려고 합니다. 프록시와 데코레이터 패턴 사용예시 데코레이터 패턴이 적용되지 않은 예제코드 데코레이터 패턴이 적용된 예제코드 프록시와 데코레이터 패턴 프록시를 통하여 할 수 있는 기능은 크게 접근 제어와 부가기능 추가라는 2가지 기능으로 나뉘게 됩니다. 프록시 패턴을 포스팅할때, 프록시 패턴은 프록시를 이용한 접근 제어에 의도가 있었다면, 이번에 정리할 데코레이터 패턴은 프록시를 이용한 부가기능 추가에 그 의도가 있습니다. GOF 디자인패턴에서는 프록시 패턴을 아래와 같이 정의하고 있습니다. 데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는..
[디자인패턴] 프록시 패턴 이번 글에서는 프록시 패턴에 대해서 알아보려고 합니다. 프록시와 프록시 패턴 사용예시 프록시 패턴이 적용되지 않은 예제코드 프록시 패턴이 적용된 예제코드 프록시와 프록시 패턴 프록시 패턴을 정리하기에 앞서 프록시와 프록시 패턴은 서로 다르다는 것을 인지하셔야합니다. 프록시 패턴은 프록시를 활용하여 만들어진 패턴이기 때문입니다. 먼저, 프록시는 우리말로 대변인이라는 의미를 가지고 있습니다. 대변인은 우리가 해야 할 일을 대신 수행거나 처리해줄 수 있는 역할입니다. 아래 예시를 함께 보도록 하겠습니다. 아내에게 아기를 씻기기 위해 물좀 받아달라고 하였는데, 아내가 이미 받아 두었다고하여 아기를 바로 씻길수 있음(캐싱, 접근제어) 음식매장 관리자인 내가 직원에게 설거지만 하고 퇴근하라고 말을하였는데, 직원이 ..
[디자인패턴] 전략 패턴 이번 글에서는 전략 패턴에 대해서 알아보려고 합니다. 전략 패턴 개념 사용예시 전략 패턴 예제 코드 전략 패턴 개념 GOF 디자인패턴에서는 전략 패턴을 아래와 같이 정의하고 있습니다. "알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만들자. 전략을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다." 전략 패턴은 템플릿 메서드 패턴과 비슷하지만, 상속에의해 발생되는 단점들을 깔끔하게 해결 할 수 있는 패턴입니다. 즉, 템플릿 메서드 패턴은 부모클래스에 변하지 않는 템플릿을 두고, 변하는 부분을 자식클래스에서 상속을 받아 처리하였다면, 전략 패턴은 변하지 않는 부분을 Context라는 곳에 두고, 변하는 부분을 Strategy라는 인터페이스를 만들고 해당 인터..
[디자인패턴] 템플릿 메서드 패턴 이번 글에서는 템플릿 메서드 패턴에 대해서 알아보려고 합니다. 템플릿 메서드 패턴 개념 사용예시 템플릿 메서드 패턴 예제 코드 템플릿 메서드 패턴 개념 GOF 디자인패턴에서는 템플릿 메서드 패턴을 아래와 같이 정의하고 있습니다. "작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 메서드를 사용하면 하위 클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있습니다." 즉, 부모클래스에 전체적인 로직중 변경되지않는 부분과 변경되는 부분을 나누어 템플릿화 시키고 변경되는 부분을 서브클래스에 정의하는 방식입니다. 사용예시 나는 어느 회사에 개발자입니다. 회사의 여러 서비스 중 예약하는 서비스가 오래 걸린다는 말을 듣고, 개발팀장님이 해당 서비스가 실행되..