자바

· 자바
어댑터 패턴목적호환되지 않는 인터페이스를 가진 기존 클래스를, 클라이언트가 기대하는 인터페이스에 맞게 변환한다.특징기존 클래스의 인터페이스를 클라이언트가 기대하는 인터페이스로 변환하여 호환성을 제공한다.이때 클라이언트가 이미 사용 중인 기존 인터페이스를 유지하는 것을 목표로 한다.재귀적 합성을 지원하지 않는다.어댑터는 보통 서로 다른 인터페이스 하나를 다른 인터페이스 하나로 바꾸는 역할이기 때문이다.일반적으로 하나의 객체만 래핑 하여 동작한다. 데코레이터 패턴목적객체의 기능을 동적으로 확장하기 위해 사용한다.특징향상된 인터페이스를 래핑된 객체에 제공한다.기존 객체의 인터페이스는 변경하지 않는다.클라이언트는 원래 객체와 동일한 방식으로 데코레이터를 사용할 수 있다.행동(기능)을 확장하면서도, 기초 인터페이..
· 자바
컴포지트 패턴은 동일한 타입의 단일 객체처럼 여러 객체의 그룹을 취급하는 방식이다. 컴포지트 패턴은 객체들을 트리 구조로 구성(composite)하여 부분-전체 계층 구조(part-whole hierarchy)를 표현한다. 컴포지트 패턴을 구현하면, 클라이언트는 개별 객체와 객체의 조합을 동일한 방식으로 다룰 수 있게 된다. 컴포지트 패턴은 다음과 같은 문제를 해결한다.부분-전체 관계(part-whole hierarchy)를 표현하고자 할 때, 클라이언트가 부분과 전체 객체를 동일하게 다룰 수 있어야 한다.부분-전체 관계(part-whole hierarchy)를 트리 구조로 나타낼 수 있어야 한다.Part 객체와 Part 객체의 컨테이너 역할을 하는 Whole 객체를 정의할 때 클라이언트는 이를 별도로 ..
· 자바
퍼사드 패턴은 복잡한 내부 구조나 코드들을 감추고 외부에는 단순한 인터페이스만 제공하는 소프트웨어 디자인 패턴이다. 퍼사드 패턴은 다음과 같은 문제를 해결한다.클라이언트가 복잡한 서브 시스템에 의존하는 문제 클라이언트가 복잡한 서브 시스템에 의존하는 문제클라이언트가 복잡한 서브 시스템을 직접 사용한다면 여러 개의 객체와 다양한 인터페이스에 의존하게 된다. 이는 클라이언트 코드의 구현, 변경, 테스트, 재사용을 어렵게 만든다. 파사드 패턴은 이러한 문제를 아래와 같이 해결한다.복잡한 서브 시스템에 대한 간단한 인터페이스를 정의하고 제공한다.클라이언트가 직접 처리하던 서브 시스템에 대한 요청은 파사드 내부에서 위임(delegation) 방식으로 처리한다.이는 결과적으로, 클라이언트는 퍼사드를 통해서만 서브 ..
· 자바
소프트웨어 엔지니어링에서 위임 패턴은 객체 지향 디자인 패턴으로, 객체를 구성하여 상속과 동일한 코드 재사용을 달성할 수 있게 해 준다. 위임에서는, 한 객체가 어떤 요청을 처리할 때, 그 요청을 두 번째 객체(위임 대상, delegate)에게 넘겨서 처리하게 한다. 이때 delegate는 원래 객체의 문맥을 유지하면서 동작하는 helper 객체이다.public class ContentCachingRequestWrapper extends HttpServletRequestWrapper { public ContentCachingRequestWrapper(HttpServletRequest request, int cacheLimit) { super(request); // 원래 request..
· 자바
데코레이터는 객체들을 새로운 행동들을 포함한 특수 래퍼 객체들 내에 넣어서 행동들을 해당 객체들에 연결시키는 구조적 디자인 패턴이다. 객체의 동작을 변경을 위해 상속을 사용하는 경우 주의 사항상속은 정적이다. 런타임​(실행시간) 때 기존 객체의 행동을 변경할 수 없다. 전체 객체를 다른 자식 클래스에서 생성된 다른 객체로만 바꿀 수 있다.자식 클래스는 하나의 부모 클래스만 가질 수 있다. 대부분 언어에서의 상속은 클래스가 동시에 여러 클래스의 행동을 상속하도록 허용하지 않는다. 객체의 동작을 변경을 위해 상속 대신 집합 관계 또는 합성을 사용하는 경우집합 관계에서는 한 객체가 다른 객체에 대한 참조를 갖고 일부 작업을 위임한다. 반면, 상속을 사용하면 객체 자체가 부모 클래스에서 행동을 상속한 후 해당 ..
· 자바
소프트웨어 엔지니어링에서 어댑터 패턴은 기존 클래스의 인터페이스를 다른 인터페이스로 사용할 수 있도록 하는 소프트웨어 디자인 패턴이다. 기존 클래스를 소스 코드를 수정하지 않고 다른 클래스와 함께 작동하도록 하는 데 자주 사용된다. 어댑터 디자인 패턴은 다음과 같은 문제를 해결한다.클라이언트가 필요로 하는 인터페이스가 없는 클래스를 어떻게 재사용할 수 있나요?호환되지 않는 인터페이스를 가진 클래스는 어떻게 함께 작동할 수 있는가?클래스에 대체 인터페이스를 어떻게 제공할 수 있는가? 클라이언트가 필요로 하는 인터페이스가 없는 클래스를 어떻게 재사용할 수 있나요?인터페이스가 클라이언트가 요구하는 인터페이스와 일치하지 않기 때문에 (이미 존재하는) 클래스를 재사용할 수 없는 경우가 종종 있다. 어댑터 디자인 ..
belljun
'자바' 태그의 글 목록