인터페이스가 서로 맞지 않을 때 함께 동작하고자 연결시키는 구조패턴출처 : 위키디피아Client : Target을 사용하는 주체Target : 기준이 되는 클래스Adaptee : 변환되는 클래스Adaptor : Adaptee를 Target으로 변환시켜주는 클래스예제디바
복잡한 서브시스템에 인터페이스를 단순하게 구성하고자 할때 시스템간에 결합도를 줄이고자 할때 서브시스템을 계층화 시키고 싶을때 사용하는 구조 패턴 출처 : 위키피디아 > Facade : 사용자의 요청을 서브시스템 객체에 전달하는 단순하고 일관된 통합 인터페이스 Sub
기존 객체 수정 없이 새로운 책임(기능)을 동적으로 추가하고 싶을때 사용하는 구조패턴 출처 : 위키디피아 > Component : 실질적인 인스턴스를 컨트롤하는 역할 ConcreteComponent : Component의 실질적인 인스턴스의 부분으로 책임의 주체의
객체를 실제 사용하기 전까지 초기화를 미루고 싶을때 (Lazy init) 접근 권한 체크할 때 사용하는 구조 패턴 출처 : 위키디피아 > Subject : RealSubject와 Proxy를 위한 공통 인터페이스 RealSubject : 실제 기능을 제공하는 클래스
공통된 기능을 상위 클래스에 정의하고, 자주 변경되며 확장되는 기능을 서브 클래스에 구현하여 효율적으로 재사용 가능하도록 한 행위 패턴 문제해결의 큰 흐름은 유지하고, 단계별 처리는 위임하고자 할때 구체적인 처리방법은 하위 클래스로 위임하고자 할때 사용한다. 출처
메시지 송신측과 수신측을 분리하여 요청을 처리하는 기회를 다른 객체에 분산한다. 요청이 들어오면 해당 요청을 처리할 수 있는 객체를 찾을 때까지 연결 고리를 따라 요청을 전달하고, 적합한 객체를 발견하면 요청한 서비스를 제공하는 행위 패턴메시지를 보내는 객체와 처리하는
서로 관련성이 있거나 독립적인 여러 객체들의 조합을 만들기 위한 인터페이스를 제공하는 패턴이다. 단순히 객체를 만들어 주는 것이 아니라 객체들의 조합을 만들어 준다는 점이 중요하다. 메시지를 보내는 객체와 처리하는 객체를 분리하고 싶을때 하나의 메시지를 여러 객체가
복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴복잡한 객체의 생성방법과 표현방법을 분리해야할 때생성방법과 구성방법 모두 캡슐화 해야할 때사용한다.출처 : 위키디피아
객체를 생성해주는 팩토리 메서드를 정의하고, 객체 생성을 팩토리 메서드에 위임하는 생성 패턴이다. 사용하는 쪽에서는 인터페이스에 의존하도록 하여 어떤 객체를 생성할지 컴파일 시점에 알 수 없도록 한다. 복잡한 객체 생성을 캡슐화 해야할 때 생성은 다른 클래스(Fact
원형이 되는 클래스를 생성하고, 해당 클래스의 객체를 복제하여 새로운 객체를 만들어나가는 패턴이다. 클래스를 동일하게 유지하면서 내부의 값이나 구조를 바꿔가며 새로운 객체를 만들 수 있기 때문에 클래스의 개수를 줄일 수 있다.중복된 자원소모없이 객체를 복사하고 싶은 경
행위를 클래스로 캡슐화하여 행위를 자유롭게 바꿀 수 있도록 하는 행동 패턴 클라이언트에 독립적으로 문제 해결 전략을 바꾸고 싶을때 다양한 문제해결 방법을 제공해야할때 사용한다. 출처 : 위키디피아 > Strategy : 알고리즘에 대한 공통 연산을 정의한 인터페이
한 개의 클래스에 오직 한 개의 인스턴스만 존재하도록 하고, 해당 클래스의 인스턴스 접근 시 항상 동일한 인스턴스를 반환하도록 하는 생성 패턴이다. 출처 : 위키디피아 > Singleton : 하나의 인스턴스만을 생성하고, 항상 동일한 인스턴스 반환 예제 > 객
큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층구조(추상화 및 구현)로 나눈 후 각각 독립적으로 개발할 수 있도록 하는 구조 패턴 출처 : 위키디피아 > Abstraction : 기능 계층의 최상위 클래스로, 기능을 정의한 인터페이스 Refi
큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층구조(추상화 및 구현)로 나눈 후 각각 독립적으로 개발할 수 있도록 하는 구조 패턴 출처 : 위키디피아 > Abstraction : 기능 계층의 최상위 클래스로, 기능을 정의한 인터페이스 Refi
공통으로 사용하는 클래스(Flyweight)를 생성하는 팩토리 클래스(FlyweightFactory)를 만들어, 인스턴스를 최초 1개만 생성하고 공유하여 재사용할 수 있도록 하는 구조 패턴이다.출처 : 위키디피아Flyweight : 공유할 객체의 기능을 정의한 인터페이