Java
-
행위 패턴(Behavioral Pattern) - 인터프리터(Interpreter) 패턴Java/디자인패턴 2024. 11. 27. 10:29
인터프리터(Interpreter) 패턴은 행위 패턴(Behavioral Pattern) 중 하나로, 주로 언어나 문법을 처리하는 데 사용됩니다. 이 패턴은 언어의 문법을 표현하는 클래스를 정의하고, 그 문법에 맞는 문장을 해석(interpret)하는 방법을 제공합니다. 주로 컴파일러나 스크립트 언어의 구문 분석기 구현에 사용됩니다.1. 인터프리터 패턴의 목적인터프리터 패턴의 목적은 주어진 언어나 표현식의 문법을 해석할 수 있는 클래스를 정의하고, 문법에 맞는 입력을 처리할 수 있도록 하는 것입니다. 이를 통해 다양한 표현식을 객체로 모델링하고, 해당 표현식을 처리하는 방법을 구현할 수 있습니다.2. 인터프리터 패턴의 구성 요소Context: 해석할 문법을 포함하는 입력 데이터를 제공합니다.Abstract..
-
구조(Structural) 패턴 - 복합체(Composite) 패턴Java/디자인패턴 2024. 11. 26. 13:15
복합체(Composite) 패턴은 구조(Structural) 패턴에 속합니다. 이 패턴은 객체를 트리 구조로 구성하여 부분-전체 계층 구조를 표현하는 데 사용됩니다. 클라이언트가 개별 객체와 복합 객체(즉, 객체의 그룹)를 동일하게 취급할 수 있도록 설계됩니다.복합체 패턴의 특징트리 구조 관리:객체를 트리 형태로 구성하여 개별 객체와 복합 객체를 동일하게 처리합니다.재귀적 구성:객체가 자신과 동일한 타입의 객체를 포함할 수 있습니다.클라이언트의 단순화:클라이언트는 개별 객체와 복합 객체를 구분하지 않고 동일한 방식으로 처리할 수 있습니다.복합체 패턴의 구성요소Component (구성 요소):개별 객체와 복합 객체를 동일하게 취급하기 위한 인터페이스를 정의합니다.Leaf (잎):구성 요소의 기본 단위로, ..
-
패턴은 행동(Behavioral) - 책임 연쇄(Chain of Responsibility) 패턴Java/디자인패턴 2024. 11. 24. 21:18
책임 연쇄(Chain of Responsibility) 패턴책임 연쇄(Chain of Responsibility) 패턴은 행동(Behavioral) 패턴에 속합니다. 이 패턴은 요청을 처리하는 여러 객체를 연결하여 요청을 처리할 수 있는 객체가 나올 때까지 객체 체인을 따라 요청을 전달합니다. 요청을 처리할 객체를 동적으로 결정할 수 있도록 설계됩니다.책임 연쇄 패턴의 특징요청 처리의 유연성:요청을 처리할 객체를 명확히 알 필요 없이 처리의 흐름을 객체 간 연결을 통해 동적으로 결정합니다.결합도 감소:요청 발신자와 처리자가 서로를 직접 참조하지 않으므로 객체 간 결합도가 낮아집니다.확장성 증가:새로운 처리 객체를 추가하거나 변경할 때 기존 객체를 수정할 필요 없이 체인에 추가만 하면 됩니다.책임 연쇄 패..
-
생성 패턴(Creational Pattern) - 프로토타입(Prototype) 패턴Java/디자인패턴 2024. 11. 23. 12:14
프로토타입(Prototype) 패턴은 생성 패턴(Creational Pattern) 중 하나로, 객체의 복사본을 생성할 수 있는 메커니즘을 제공합니다. 이 패턴은 객체를 복제하여 새 객체를 만드는 방식으로, 객체 생성에 드는 비용을 줄이고, 객체가 복잡한 구조를 가질 때 유용합니다. 즉, 새로운 객체를 만들 때 객체의 생성과 초기화 과정이 복잡할 경우, 기존 객체를 복사하여 사용하는 방법을 제시합니다.1. 프로토타입 패턴의 목적프로토타입 패턴은 객체를 새로 생성하는 대신, 기존 객체를 복제하여 새로운 객체를 생성하는 방식으로 성능을 개선할 수 있습니다. 이 패턴을 사용하면 객체 생성 시 필요한 시간이 단축되고, 복잡한 객체를 만드는 과정에서 발생할 수 있는 오류를 줄일 수 있습니다.2. 프로토타입 패턴의..
-
행동(Behavioral) - 메멘토(Memento) 패턴Java/디자인패턴 2024. 11. 22. 17:38
메멘토(Memento) 패턴메멘토(Memento) 패턴은 행동(Behavioral) 패턴에 속합니다. 이 패턴은 객체의 상태를 저장하고, 이후 필요 시 저장된 상태로 복원할 수 있도록 하는 데 사용됩니다. 주로 Undo/Redo 기능을 구현하거나, 객체의 상태를 특정 시점으로 복원해야 하는 경우에 유용합니다.메멘토 패턴의 특징상태 캡슐화:객체의 상태를 외부에서 직접 접근하지 않고, 메멘토 객체를 통해 캡슐화하여 저장합니다.복원 기능 제공:저장된 메멘토를 사용하여 객체를 이전 상태로 되돌릴 수 있습니다.정보 은닉:메멘토 객체는 원래 객체의 내부 상태를 캡슐화하며, 이를 보호하기 위해 Originator(원본 객체)만 상태를 저장하고 복원할 수 있습니다.메멘토 패턴의 구성요소Memento (메멘토):Orig..
-
행동(Behavioral) - 커맨드(Command) 패턴Java/디자인패턴 2024. 11. 21. 09:45
커맨드(Command) 패턴커맨드(Command) 패턴은 행동(Behavioral) 패턴에 속합니다. 이 패턴은 요청을 객체로 캡슐화하여 사용자가 요청의 매개변수화, 큐잉(queuing), 로깅(logging) 등을 수행할 수 있도록 합니다. 또한, 작업 실행 취소(Undo)와 재실행(Redo) 기능을 쉽게 구현할 수 있도록 설계됩니다.커맨드 패턴의 특징명령 캡슐화:요청(작업)을 하나의 객체로 캡슐화하여 메서드 호출을 명령 객체로 처리합니다.작업 실행 취소 및 재실행 지원:명령의 상태를 저장하여 Undo와 Redo를 쉽게 구현할 수 있습니다.클라이언트와 요청 분리:명령을 요청하는 클라이언트와 실제로 요청을 실행하는 리시버(Receiver)를 분리합니다.커맨드 패턴 구성요소Command (명령):실행될 작..
-
구조 패턴(Structural Pattern) - 데코레이터(Decorator) 패턴Java/디자인패턴 2024. 11. 20. 09:25
1. 소속 카테고리데코레이터 패턴은 **구조 패턴(Structural Pattern)**에 속합니다. 구조 패턴은 클래스나 객체를 조합하여 더 큰 구조를 형성하거나, 객체 간의 관계를 효율적으로 구성하는 데 초점을 맞춥니다.2. 특징객체에 동적으로 새로운 기능을 추가할 수 있습니다.기존 객체를 수정하지 않고도 기능 확장이 가능하여 **개방-폐쇄 원칙(OCP)**을 준수합니다.상속을 사용하지 않고도 유연하게 기능을 확장할 수 있습니다.3. 주요 구성 요소Component (기본 인터페이스/추상 클래스): 기본 객체의 공통된 인터페이스를 정의합니다.ConcreteComponent: 기본 객체로, 기본 동작을 구현합니다.Decorator: Component를 구현하거나 상속받아 동적으로 기능을 추가할 수 있는..
-
생성 패턴(Creational Pattern) - 빌더(Builder) 패턴Java/디자인패턴 2024. 11. 19. 09:53
1. 소속 카테고리빌더 패턴은 **생성 패턴(Creational Pattern)**에 속합니다. 생성 패턴은 객체 생성 과정을 캡슐화하여 객체 생성의 복잡성을 줄이고, 코드의 재사용성과 유연성을 향상시키는 데 중점을 둡니다.2. 특징복잡한 객체를 단계적으로 생성할 수 있도록 도와줍니다.동일한 생성 과정을 통해 서로 다른 표현(구성)을 가진 객체를 생성할 수 있습니다.클라이언트 코드와 객체 생성 코드를 분리하여 유지보수를 용이하게 만듭니다.3. 주요 구성 요소Builder (인터페이스 또는 추상 클래스): 객체 생성의 각 단계를 정의합니다.ConcreteBuilder: Builder 인터페이스를 구현하며, 객체의 생성 단계를 구체적으로 정의합니다.Director: Builder 객체를 사용하여 복잡한 객체..