본문 바로가기
java

디자인패턴에서 자주 쓰이는 용어 정리(GPT)(1)

by 포잉띠 2024. 7. 16.

 

  • 컨텍스트 (Context):
    • 객체가 속한 환경이나 상황을 의미합니다. 주로 전략 패턴이나 상태 패턴에서 많이 사용됩니다.
    • 예: 전략 패턴에서 Context는 전략을 사용하는 객체를 의미합니다.
  • 컴포넌트 (Component):
    • 구조적 패턴에서 자주 사용되는 용어로, 기본 인터페이스나 추상 클래스를 의미합니다.
    • 예: 데코레이터 패턴에서 Component는 기본 인터페이스로, 데코레이터와 실제 객체가 이 인터페이스를 구현합니다.
  • 구성 (Composition):
    • 객체가 다른 객체를 포함하는 것을 의미합니다. 객체 간의 "has-a" 관계를 나타내며, 상속 대신 구성의 사용을 권장합니다.
    • 예: 데코레이터 패턴에서 데코레이터는 구성 관계를 통해 원래 객체를 포함합니다.
  • 전략 (Strategy):
    • 특정 행위를 캡슐화하여, 동적으로 교체 가능한 일련의 알고리즘을 정의합니다.
    • 예: 전략 패턴에서 Strategy는 알고리즘을 정의하는 인터페이스입니다.
  • 상태 (State):
    • 객체의 상태를 나타내며, 객체의 행동을 변경할 수 있는 패턴에서 사용됩니다.
    • 예: 상태 패턴에서 State는 객체의 상태를 정의하는 인터페이스입니다.
  • 주체 (Subject):
    • 옵저버 패턴에서 상태 변화를 알리는 객체입니다.
    • 예: 옵저버 패턴에서 Subject는 옵저버를 관리하고 알림을 보내는 객체입니다.
  • 옵저버 (Observer):
    • 주체의 상태 변화를 감지하고 반응하는 객체입니다.
    • 예: 옵저버 패턴에서 Observer는 주체의 상태 변화 알림을 받는 객체입니다.
  • 팩토리 (Factory):
    • 객체 생성 로직을 캡슐화하는 메소드나 클래스를 의미합니다.
    • 예: 팩토리 패턴에서 Factory는 객체 생성을 담당하는 클래스입니다.
  • 프록시 (Proxy):
    • 다른 객체에 대한 접근을 제어하는 객체입니다.
    • 예: 프록시 패턴에서 Proxy는 원본 객체에 대한 대리 객체입니다.
  • 추상 팩토리 (Abstract Factory):
    • 관련 객체들을 생성하는 인터페이스를 제공합니다.
    • 예: 추상 팩토리 패턴에서 Abstract Factory는 객체 군을 생성하는 인터페이스입니다.
  • 빌더 (Builder):
    • 복잡한 객체의 생성 과정을 단계별로 분리하여 순차적으로 객체를 생성합니다.
    • 예: 빌더 패턴에서 Builder는 객체 생성의 단계별 과정을 정의하는 인터페이스입니다.
  • 싱글톤 (Singleton):
    • 특정 클래스의 인스턴스를 하나만 생성하여 제공하는 패턴입니다.
    • 예: 싱글톤 패턴에서 Singleton 클래스는 하나의 인스턴스만 가지도록 보장합니다.
  • 어댑터 (Adapter):
    • 호환되지 않는 인터페이스를 가진 클래스를 함께 작동할 수 있도록 해줍니다.
    • 예: 어댑터 패턴에서 Adapter는 호환되지 않는 인터페이스를 변환하는 클래스입니다.
  • 프록시 (Proxy):
    • 다른 객체에 대한 접근을 제어하는 객체입니다.
    • 예: 프록시 패턴에서 Proxy는 원본 객체에 대한 대리 객체입니다.

 

  • 클라이언트 (Client):
    • 패턴을 사용하는 코드나 객체를 의미합니다. 클라이언트는 패턴을 통해 제공되는 기능을 사용합니다.
    • 예: 팩토리 패턴에서 Client는 팩토리 객체를 사용하여 다른 객체를 생성하는 코드입니다.
  • 핸들러 (Handler):
    • 요청을 처리하는 객체를 의미합니다. 주로 책임 연쇄 패턴에서 사용됩니다.
    • 예: 책임 연쇄 패턴에서 Handler는 요청을 처리하거나 다음 핸들러로 전달하는 객체입니다.
  • 중재자 (Mediator):
    • 객체 간의 상호작용을 조정하는 객체를 의미합니다.
    • 예: 중재자 패턴에서 Mediator는 객체 간의 소통을 중재하는 객체입니다.
  • 기반 클래스 (Base Class):
    • 다른 클래스가 상속받을 수 있는 기본 클래스를 의미합니다.
    • 예: 상속을 통해 공통 기능을 제공하는 Base Class입니다.
  • 구체적 제품 (Concrete Product):
    • 팩토리 패턴에서 생성되는 실제 객체를 의미합니다.
    • 예: 팩토리 메소드 패턴에서 Concrete Product는 팩토리 메소드에 의해 생성되는 구체적인 객체입니다.
  • 원본 객체 (Real Subject):
    • 프록시 패턴에서 프록시가 대리하는 실제 객체를 의미합니다.
    • 예: 프록시 패턴에서 Real Subject는 프록시가 접근을 제어하는 실제 객체입니다.
  • 템플릿 메소드 (Template Method):
    • 알고리즘의 골격을 정의하고, 세부 구현은 서브 클래스에서 수행하는 메소드를 의미합니다.
    • 예: 템플릿 메소드 패턴에서 Template Method는 알고리즘의 기본 구조를 정의하는 메소드입니다.
  • 지연 초기화 (Lazy Initialization):
    • 객체의 초기화를 지연하여, 실제로 필요할 때 객체를 생성하는 기법입니다.
    • 예: 싱글톤 패턴에서 Lazy Initialization은 객체를 처음 사용할 때 초기화하는 방식입니다.
  • 모노스테이트 (Monostate):
    • 클래스의 인스턴스가 여러 개여도 상태를 공유하는 패턴입니다.
    • 예: 싱글톤 패턴의 변형으로, 여러 인스턴스가 동일한 상태를 가지는 Monostate 패턴입니다.
  • 플라이웨이트 (Flyweight):
    • 객체의 공유를 통해 메모리를 절약하는 패턴입니다.
    • 예: 플라이웨이트 패턴에서 Flyweight는 여러 객체가 공유할 수 있는 상태를 가지는 객체입니다.
  • 컴포지트 (Composite):
    • 객체들을 트리 구조로 구성하여, 부분-전체 계층을 나타내는 패턴입니다.
    • 예: 컴포지트 패턴에서 Composite는 복합 객체를 의미하며, 개별 객체와 동일한 방식으로 처리됩니다.
  • 비지터 (Visitor):
    • 객체 구조를 변경하지 않고 새로운 연산을 추가하는 패턴입니다.
    • 예: 비지터 패턴에서 Visitor는 객체 구조를 순회하며 연산을 수행하는 객체입니다.
  • 메멘토 (Memento):
    • 객체의 상태를 캡슐화하여, 나중에 복원할 수 있도록 하는 패턴입니다.
    • 예: 메멘토 패턴에서 Memento는 객체의 이전 상태를 저장하는 객체입니다.
  • 인터프리터 (Interpreter):
    • 언어의 문법을 정의하고 해석하는 패턴입니다.
    • 예: 인터프리터 패턴에서 Interpreter는 문법을 정의하고 해석하는 객체입니다.
  • 파사드 (Facade):
    • 복잡한 시스템의 간단한 인터페이스를 제공하는 패턴입니다.
    • 예: 파사드 패턴에서 Facade는 복잡한 시스템에 대한 단순한 인터페이스를 제공하는 객체입니다.
  • 브리지 (Bridge):
    • 구현과 인터페이스를 분리하여 서로 독립적으로 변형할 수 있게 하는 패턴입니다.
    • 예: 브리지 패턴에서 Bridge는 구현과 인터페이스를 독립적으로 변경할 수 있도록 분리하는 구조입니다.

 

  • 합성 (Aggregation):
    • 부분과 전체의 관계를 나타내는 것으로, 부분이 전체의 생명 주기에 독립적인 경우입니다.
    • 예: 자동차와 엔진의 관계에서 엔진은 자동차의 생명 주기에 독립적입니다.
  • 포함 (Containment):
    • 하나의 객체가 다른 객체를 포함하는 관계입니다. 이는 보통 합성과 구성의 의미로 사용됩니다.
    • 예: 상자 객체가 여러 물건 객체를 포함하는 경우입니다.
  • 디스패치 (Dispatch):
    • 메소드 호출을 처리하는 방식입니다. 정적 디스패치와 동적 디스패치가 있습니다.
    • 예: 정적 디스패치는 컴파일 시간에, 동적 디스패치는 런타임에 메소드가 결정됩니다.
  • 부모 클래스 (Parent Class):
    • 다른 클래스가 상속받는 클래스입니다.
    • 예: Animal 클래스는 Dog 클래스의 부모 클래스가 될 수 있습니다.
  • 자식 클래스 (Child Class):
    • 부모 클래스를 상속받는 클래스입니다.
    • 예: Dog 클래스는 Animal 클래스의 자식 클래스입니다.
  • 컨트롤러 (Controller):
    • 모델-뷰-컨트롤러(MVC) 패턴에서 사용자 입력을 처리하고 모델과 뷰를 업데이트하는 역할을 합니다.
    • 예: 웹 애플리케이션에서 사용자의 요청을 처리하는 컨트롤러입니다.
  • 프레젠터 (Presenter):
    • 모델-뷰-프레젠터(MVP) 패턴에서 프레젠터는 뷰와 모델 간의 상호작용을 관리합니다.
    • 예: 프레젠터는 뷰로부터 입력을 받아 모델을 업데이트하고, 모델의 변경 사항을 뷰에 반영합니다.
  • 헬퍼 클래스 (Helper Class):
    • 특정 작업을 도와주는 유틸리티 클래스를 의미합니다.
    • 예: 문자열 처리 작업을 도와주는 헬퍼 클래스입니다.
  • 유틸리티 클래스 (Utility Class):
    • 자주 사용되는 기능을 모아둔 클래스를 의미합니다.
    • 예: 자바의 java.util.Collections 클래스입니다.
  • 엔티티 (Entity):
    • 데이터베이스의 테이블과 직접 매핑되는 클래스입니다.
    • 예: 사용자 정보를 저장하는 User 클래스입니다.
  • 리팩토링 (Refactoring):
    • 코드의 기능은 변경하지 않으면서 구조를 개선하는 것을 의미합니다.
    • 예: 중복된 코드를 제거하고, 가독성을 높이는 작업입니다.
  • 싱크로나이제이션 (Synchronization):
    • 멀티스레드 환경에서 여러 스레드가 같은 자원을 동시에 접근하지 못하도록 제어하는 기법입니다.
    • 예: 자바의 synchronized 키워드를 사용한 동기화입니다.
  • 콜백 (Callback):
    • 특정 작업이 완료된 후 호출되는 메소드를 의미합니다.
    • 예: 비동기 작업이 완료된 후 실행되는 함수입니다.
  • 디커플링 (Decoupling):
    • 두 모듈 간의 결합을 줄여, 변경에 유연하도록 만드는 기법입니다.
    • 예: 인터페이스를 사용하여 구현과 인터페이스를 분리하는 것.
  • 파이프라인 (Pipeline):
    • 데이터를 여러 단계로 나누어 처리하는 구조입니다.
    • 예: 데이터 처리를 단계별로 수행하는 파이프라인입니다.
  • 플러그인 (Plugin):
    • 프로그램의 기능을 확장하기 위해 동적으로 로드되는 모듈입니다.
    • 예: 브라우저의 확장 기능입니다.
  • 디코레이터 체인 (Decorator Chain):
    • 여러 데코레이터를 체인 형태로 연결하여, 각 데코레이터가 순차적으로 동작하도록 구성합니다.
    • 예: 여러 데코레이터가 연속적으로 적용되는 구조입니다.
  • 미디에이터 (Mediator):
    • 객체들 간의 상호작용을 중재하는 객체입니다.
    • 예: 채팅 프로그램에서 사용자 간의 메시지를 중재하는 객체입니다.
  • 모노리틱 (Monolithic):
    • 모든 기능이 하나의 큰 단위로 구성된 시스템입니다.
    • 예: 모든 기능이 하나의 코드베이스에 포함된 애플리케이션입니다.
  • 모듈 (Module):
    • 시스템의 기능을 분리한 독립적인 단위를 의미합니다.
    • 예: 쇼핑몰 시스템의 결제 모듈, 사용자 관리 모듈 등입니다.
  • 인젝터 (Injector):
    • 의존성을 주입하는 객체를 의미합니다.
    • 예: 의존성 주입 프레임워크에서 의존성을 주입하는 역할을 합니다.
  • 서비스 (Service):
    • 특정 기능을 제공하는 클래스를 의미합니다.
    • 예: 사용자 인증을 처리하는 서비스 클래스입니다.
  • 리졸버 (Resolver):
    • 특정 요청을 처리할 객체를 결정하는 역할을 합니다.
    • 예: URL 요청을 처리할 컨트롤러를 결정하는 역할입니다.
  • 워크플로우 (Workflow):
    • 작업의 흐름을 정의하고 관리하는 것을 의미합니다.
    • 예: 업무 프로세스를 자동화하는 워크플로우 시스템입니다.
  • 핸들러 체인 (Handler Chain):
    • 여러 핸들러를 체인 형태로 연결하여, 순차적으로 요청을 처리하는 구조입니다.
    • 예: 책임 연쇄 패턴에서 핸들러 체인을 구성하는 방법입니다.