본문 바로가기
728x90

ComputerScience/Design Pattern7

Proxy Pattern Proxy Pattern 이란? 특정 객체에 접근하기 전에 proxy 객체를 통해 접근 제어(권한 체크, 캐싱, 지연 로딩) 및 기능을 추가할 수 있는 패턴입니다. 즉, 클라이언트가 사용하려는 객체를 직접 사용하는 것이 아니라 proxy를 거쳐서 사용하는 패턴입니다. 객체에서 프록시가 되려면, 클라이언트는 서버(요청을 처리하는 객체)에게 요청을 한 것인지, 프록시에게 요청을 한 것인지 몰라야 합니다. 즉 서버와 프록시 객체는 같은 인터페이스를 사용해야 합니다. 이렇게 되면 클라이언트는 서버 객체를 프록시 객체로 변경해도 클라이언트의 코드를 변경하지 않고(OCP) 새로운 기능 추가 및 접근 제어를 할 수 있게 됩니다. proxy pattern을 사용하면 사용하려는 객체에 접근제어를 한다던가 생성하는데 많은.. 2023. 3. 13.
Adaptor Pattern Adaptor Pattern 이란? 국산 전원 플러그를 영국식 소캣에 꽂을 수 있게 해주는 것을 AC 어탭터라고 하죠. 즉, 어댑터는 한 인터페이스를 다른 인테퍼이스로 변환해 주는 역할을 합니다. 객체지향에서의 어댑터 패턴도 일상생활에서 쓰이는 어댑터와 동일한 역할을 합니다. 이미 존재하는 클래스의 인터페이스를 변경하거나, 호환성이 없는 두 클래스를 연결하는 데 사용됩니다. 즉, 호환성 문제를 해결하는 데 사용하는 패턴입니다. 예를 들어서 기존 시스템에 잘 사용하고 있던 외부 API가 있다고 가정해봅시다. 어느 날 잘 사용하고 있던 중 갑자기 외부 API가 서비스를 중지하여 새로운 API와 연결해서 써야 되는 상황이 된 거죠 하지만 밑의 허접한 그림을 보시면 기존 시스템을 기존에 사용하던 외부 API에 .. 2023. 3. 6.
Facade Pattern Facade Pattern 이란? 하위 시스템의 복잡도를 감추는 동시에 그 전체 기능을 사용하기 쉬운 단순한 인터페이스를 제공하는 패턴입니다. 즉, 복잡한 비즈니스 로직을 상위 레벨의 인터페이스로 캡슐화해서 하위 시스템에 더 쉽게 접근할 수 있게 하며 보통 연관된 메서드 호출을 메소드 하나로 묶어 순서대로 실행시킵니다. 퍼사드 패턴을 싱글 추상 팩토리 패턴이라고도 부릅니다. Facade Pattern이 쓰이는 경우 클래스 드라이버 같은 API를 만들 때 네트워크 호출을 줄일 때. 퍼사드 패턴은 하위 시스템을 여러 차례 호출하는 반면 클라이언트는 퍼사드 패턴을 딱 한 번만 호출합니다. 보안과 단순함 측면에서 애플리케이션 내부 실행흐름을 캡슐화 할 때 Facade Pattern의 장점 클라이언트가 하위 시스.. 2023. 2. 26.
Strategy Pattern Strategy Pattern 이란? 객체를 독립적으로 선택하고 사용할 수 있도록 하는 디자인 패턴입니다. 이 패턴은 전략을 인터페이스로 정의하고, 인터페이스의 구현체를 만들어 이를 상황에 맞게 사용하는 방법입니다. 전략 패턴을 사용하면 런타임 시점에 알고리즘을(실 서비스에서 쿠폰이나 할인율 같은 경우) 선택할 수 있으므로 유연하게 동작할 수 있습니다. 런타임 시점에 알고리즘을 선택할 수 있다는 말은 실행 시간에(런타임 시점) 코드에서 사용할 객체를 선택할 수 있다는 것을 의미합니다. 일반적으로 객체는 컴파일 시점에 결정됩니다. 즉, 코드가 컴파일되는 시점에 사용할 객체가 결정되고, 이후에는 변결할 수 없게되는데 전략 패턴을 사용하면 런타임 시점에 다른 객체를 선택하여 사용할 수 있습니다. 전략 패턴의 .. 2023. 2. 20.
디자인 패턴 - 디자인 원칙 이번 포스트에서는 디자인 패턴의 디자인 원칙에 대해서 알아보도록 하겠습니다. 디자인 패턴이란? 디자인 패턴은 소프트웨어 설계 시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔루션을 말합니다. 모든 패턴에는 간결한 이름이 있어서 잘 알려진 패턴을 적용하고자 할 때 간단히 패턴 이름을 언급하는 것만으로도 설계의 의도와 해결책을 함께 설명할 수 있다는 장점이 있습니다. 디자인 패턴은 주로 객체지향 설계에 관한 것이고, 대부분 객체지향적 설계 원칙을 이용해 문제를 해결합니다. 패턴의 설계 구조를 보면 대부분 비슷한데, 그 이유는 객체지향적인 설계로부터 문제를 해결하기 위해 적용할 수 있는 확장성 추구 방법이 대부분 두 가지로 정리되기 때문입니다.하나는 클래스 상속이고 다른 하.. 2023. 2. 14.
Builder Pattern Bulider Pattern 이란? 복잡한 객체들을 단계별로 생성할 수 있도록 하는 디자인 패턴입니다. Builder Pattern의 사용 목적 복잡한 객체의 생성 방법과 표현 방법을 분리하기 위해 사용합니다. 객체 생성에 필요한 파라미터가 많아 생성자 오버라이딩이 너무 많을 때 사용합니다. Builder Pattern의 장점 가독성이 좋아지며 인자의 의미를 코드에서 명확히 알 수 있습니다. setter method가 없으므로 변경 불가능한 객체를 만들 수 있습니다. 한 번에 객체를 반환하므로 일관성이 깨지지 않습니다. 생성자로 객체를 생성할 때처럼 인자의 순서를 지키지 않고 객체를 생성할 수 있습니다. Builder Pattern의 단점 인스턴스를 생성하기 전에 반드시 빌더를 생성해야 합니다. 관리해야.. 2023. 2. 1.
728x90