Java
-
행동(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 객체를 사용하여 복잡한 객체..
-
행동(Behavioral) - 방문자(Visitor) 패턴Java/디자인패턴 2024. 11. 18. 09:30
방문자(Visitor) 패턴방문자(Visitor) 패턴은 행동(Behavioral) 패턴에 속합니다. 이 패턴은 객체 구조와 독립적으로 새로운 동작을 추가하거나 수정할 수 있도록 합니다. 즉, 구조를 변경하지 않고도 기능 확장이 가능하도록 설계됩니다.방문자 패턴의 특징분리된 동작:객체 구조와 작업(동작)을 분리하여 객체 구조를 변경하지 않고 새로운 동작을 추가할 수 있습니다.기능 확장의 용이성:객체 구조에 다양한 동작을 추가해야 할 때 유용하며, 각 동작이 Visitor 클래스에 별도로 구현됩니다.객체 구조의 안정성:객체 구조(클래스 계층)가 자주 변경되지 않는 경우에 적합합니다.방문자 패턴의 구성요소Visitor (방문자):객체 구조의 각 요소에 대한 동작을 정의합니다.객체 구조의 각 요소를 방문하고,..
-
행동(Behavioral) - 중재자(Mediator) 패턴Java/디자인패턴 2024. 11. 17. 21:01
중재자(Mediator) 패턴중재자(Mediator) 패턴은 행동(Behavioral) 패턴에 속합니다. 이 패턴은 객체 간의 복잡한 통신과 의존성을 줄이는 데 초점이 맞춰져 있습니다. 객체들이 서로 직접적으로 통신하는 대신, 중재자 객체를 통해 통신하게 하여 객체들 간의 결합도를 낮춥니다.중재자 패턴의 특징역할 분리:객체들이 서로 직접 참조하거나 통신하지 않고, 중재자 객체가 중간에서 모든 상호작용을 관리합니다.서로 의존성을 낮추고 독립적인 재사용 가능성을 높입니다.확장성 증가:객체의 추가나 변경이 중재자만 수정하면 되기 때문에 시스템 확장이 용이합니다.복잡성 관리:여러 객체 간의 통신을 단순화하고, 객체 간 의존 관계를 명확하게 제어합니다.중재자 패턴 구조Mediator:객체들 간의 의사소통을 담당하..
-
생성(Creational) - 추상 팩토리(Abstract Factory) 패턴Java/디자인패턴 2024. 11. 16. 16:23
추상 팩토리(Abstract Factory) 패턴추상 팩토리 패턴은 생성(Creational) 디자인 패턴에 속하며, 객체의 생성 로직을 클라이언트 코드와 분리하고, 관련된 객체들을 그룹화하여 일관된 방식으로 생성할 수 있도록 돕는 패턴입니다.이 패턴은 팩토리 메서드 패턴의 확장판으로, 서로 연관된 객체들의 집합을 생성할 때 유용합니다. 이를 통해 클라이언트는 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 객체를 생성합니다.특징객체 생성 로직의 추상화: 클라이언트는 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 객체를 생성합니다.일관성 보장: 같은 팩토리를 사용하여 생성된 객체들은 서로 호환성을 유지합니다.확장성: 새로운 제품군을 쉽게 추가할 수 있습니다.구성 요소추상 팩토리(AbstractF..
-
구조적(Structural) - 플라이웨이트(Flyweight) 패턴Java/디자인패턴 2024. 11. 15. 10:32
플라이웨이트(Flyweight) 패턴은 구조적(Structural) 디자인 패턴의 하나로, 메모리 사용량을 줄이기 위해 객체의 공유를 활용하는 패턴입니다. 이 패턴은 많은 수의 객체가 동일하거나 유사한 속성을 가질 때, 중복 데이터를 줄여 메모리를 절약하는 데 유용합니다.Flyweight 패턴의 핵심 개념공유 가능한 상태(Intrinsic State): 객체 간에 공유할 수 있는 상태로, 객체가 공통적으로 가지는 속성입니다. 이러한 상태는 메모리 내에서 한 번만 저장됩니다.비공유 상태(Extrinsic State): 객체별로 개별적인 상태로, 각 객체가 고유하게 가지는 속성입니다. 이 상태는 Flyweight 객체에서 분리하여 필요할 때마다 외부에서 제공됩니다.사용 사례:그래픽 시스템: GUI에서 동일한..