본문 바로가기

디자인패턴11

[Design Pattern] 상태 패턴(State Pattern)에 대해 알아보자 Definition 상태 패턴(State Pattern)을 사용하면 객체의 내부 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 실제로 다른 클래스로 변신하는게 아니라 구성으로 여러 상태 객체를 바꿔 가면서 사용하기 때문 Behavioral Patterns State pattern은 Finite-State Machine의 개념과 밀접하게 관련되어 있다. Situation - 객체의 behavior는 state의 영향을 받아야 한다. - 복잡한 조건은 객체 동작을 해당 state에 연결한다. - state 간의 전환은 명시적이어야 한다. - 객체의 behavior는 state에 따라 달라지며 해당 state에 따라 런타임에 behavior를 .. 2022. 7. 19.
[Design Pattern] 컴포지트 패턴(Composite Pattern)에 대해 알아보자 Definition 컴포지트 패턴(Composite Pattern)으로 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현한다. 컴포지트 패턴을 사용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있다. 복합 구조(Composite Structure)를 사용하면 복합 객체와 개별 객체를 대상으로 똑같은 작업을 적용할 수 있다. 즉, 복합 객체와 개별 객체를 구분할 필요가 거의 없어진다. Composite 패턴은 공통 인터페이스를 공유하는 두 가지 기본 요소 유형인 단순 Leaf와 복합 컨테이너를 제공한다. 컨테이너는 Leaf와 다른 컨테이너로 구성될 수 있다. 이를 통해 Tree와 유사한 중첩된 재귀 객체 구조를 구성할 수 있다. Situation - 객체의 계층적 표현이 필요할 .. 2022. 7. 16.
[Design Pattern] 반복자 패턴(Iterator Pattern)에 대해 알아보자 Definition 반복자 패턴(Iterator Pattern)은 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공한다. 이 패턴을 사용하면 집합체 내에서 어떤 식으로 일이 처리되는지 전혀 모르는 상태에서 그 안에 들어있는 모든 항목을 대상으로 반복 작업을 수행할 수 있다. Cursor라고도 알려짐 Behavioral Pattern Situation - 자료구조에 상관없이 객체 접근 방식을 통일하고자 할때 - 컬렉션의 내부에 복잡한 데이터 구조가 있지만 그 복잡성을 클라이언트로 부터 숨기고 싶은 경우(편의 또는 보안상의 이유로 Iterator 패턴을 사용하라) - 앱 전체에서 순회 코드의 중복을 줄이기 위해 (순회 코드를 지정된 반복자로 이동하면 애플리케이션 코드를 보.. 2022. 7. 16.
[Design Pattern] 템플릿 메소드 패턴(Template Method Pattern)에 대해 알아보자 Definition 템플릿 메소드 패턴(Template Method Pattern)은 알고리즘의 골격을 정의한다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있다. Behavioral Patterns Situation - 클라이언트가 알고리즘의 특정 단계만 확장하고 전체 알고리즘이나 해당 구조는 확장하지 않도록 할때 - 약간의 차이가 있지만 거의 동일한 알고리즘을 포함하는 여러 클래스들이 있는 경우 - 동일한 기능은 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현 Structure Pros - 클라이언트가 대규모 알고리즘의 특정 부분만 재정의하도록 하여.. 2022. 7. 15.
300x250