본문 바로가기

JAVA/디자인 패턴

(24)
[Design Pattern] Visitor(방문자) 패턴이란? 행위 패턴(Behavioral Pattern) 방문자 패턴(Visitor pattern)은 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로, 객체의 구조와 그 구조에서 수행되는 작업을 분리하여 구현하는 패턴입니다. 방문자 패턴은 객체 구조를 이루는 요소들을 독립적으로 변경할 수 있도록 하는 패턴입니다. 즉, 객체의 구조와 구조에서 수행되는 작업을 분리하여 구현함으로써 객체의 확장성과 유연성을 높이는데 목적이 있습니다. 방문자 패턴에서는 객체 구조를 이루는 클래스들과 이들을 순회하는 방문자(visitor) 클래스를 정의합니다. 이 방문자 클래스는 객체 구조의 각 클래스를 방문하면서 그 클래스에서 수행할 작업을 구현합니다. 객체 구조에서는 방문자를 인자로 전달받아 각 클래스에서 방문자의 visit ..
[Design Pattern] Template Method(템플릿 메서드) 패턴이란? 행위 패턴(Behavioral Pattern) 템플릿 메서드 패턴(Template Method Pattern)은 객체 지향 디자인 패턴 중 하나로, 알고리즘의 일부분을 서브클래스에서 구현하도록 하는 패턴입니다. 이 패턴은 상위 클래스에서 알고리즘의 전체 구조를 정의하고, 일부 구체적인 단계를 하위 클래스에서 구현할 수 있도록 합니다. 즉, 템플릿 메서드 패턴을 사용하면 알고리즘의 구조를 유지하면서 일부 구현을 다른 클래스로 위임할 수 있습니다. 이 패턴의 핵심 아이디어는 알고리즘의 구조를 추상화하는 것입니다. 상위 클래스에서는 알고리즘의 전체 구조를 나타내는 메서드를 정의하고, 이 메서드 안에서는 구체적인 단계를 수행하는 추상 메서드를 호출합니다. 하위 클래스에서는 추상 메서드를 구현하여 전체 알고리즘을..
[Design Pattern] Strategy(전략) 패턴이란? 행위 패턴(Behavioral Pattern) 전략 패턴(Strategy Pattern)은 객체 지향 디자인 패턴 중 하나로, 알고리즘을 정의하고, 캡슐화하며, 이를 실행 시간에 서로 교환 가능하도록 만드는 패턴입니다. 전략 패턴을 사용하면, 알고리즘의 변형이나 확장을 용이하게 할 수 있으며, 객체 간의 결합도를 낮출 수 있습니다. 즉, 전략 패턴을 사용하면 알고리즘의 변경에 따라서 코드 변경을 최소화할 수 있습니다. 전략 패턴의 핵심 요소는 전략(Strategy)입니다. 전략은 알고리즘을 캡슐화한 객체로, 클라이언트는 전략을 쉽게 교환할 수 있습니다. 즉, 전략 패턴에서는 알고리즘을 클라이언트에서 분리해 전략 객체에 위임합니다. 전략 패턴은 다음과 같은 구성 요소로 이루어집니다. 전략(Strategy)..
[Design Pattern] State(상태) 패턴이란? 행위 패턴(Behavioral Pattern) 상태 패턴(State Pattern)은 객체지향 디자인 패턴 중 하나로, 객체가 내부 상태에 따라 행동을 변경할 수 있도록 하는 패턴입니다. 이 패턴은 객체가 다양한 상태를 가질 수 있고, 각 상태에 따라 객체가 다르게 동작해야 할 때 유용합니다. 상태 패턴은 크게 세 가지 구성요소로 이루어집니다. 상태(State): 객체가 가질 수 있는 상태를 나타내는 인터페이스입니다. 이 인터페이스에는 해당 상태에서 수행되어야 하는 모든 메서드가 정의됩니다. 구체적인 상태(Concrete State): 상태 인터페이스를 구현한 클래스입니다. 이 클래스는 객체가 실제로 가질 수 있는 상태 중 하나를 나타내며, 해당 상태에서 수행되어야 하는 모든 메서드를 구현합니다. 컨텍스..
[Design Pattern] Observer(옵저버) 패턴이란? 행위 패턴(Behavioral Pattern) 옵저버 패턴(Observer Pattern)은 객체 지향 디자인 패턴 중 하나로, 객체 사이의 의존성을 줄이고, 유연하게 상호작용하도록 도와주는 패턴입니다. 이 패턴은 한 객체의 상태가 변경되었을 때, 그 객체에 의존하는 다른 객체들이 자동으로 그 변경사항을 알 수 있도록 해주는 방법을 제공합니다. 이 패턴에서는 주체(Subject) 객체와 관찰자(Observer) 객체가 있습니다. 주체 객체는 상태가 변경될 때마다 자신에게 등록된 모든 관찰자 객체들에게 변경사항을 알리는 역할을 합니다. 관찰자 객체는 주체 객체의 상태를 관찰하다가 변경사항을 감지하면, 이에 대응하는 작업을 수행합니다. 옵저버 패턴은 매우 널리 사용되며, 대표적으로 아래와 같은 분야에서 사용..
[Design Pattern] Memento(메멘토) 패턴이란? 행위 패턴(Behavioral Pattern) 메멘토 패턴(Memento Pattern)은 소프트웨어 디자인 패턴 중 하나로, 객체의 상태를 저장하고 나중에 복원할 수 있는 메커니즘을 제공합니다. 이 패턴은 보통 다음과 같은 상황에서 사용됩니다. 어떤 객체의 상태를 변경하고, 이 변경 내용을 이후에 취소하거나 이전 상태로 복원하려고 할 때, 상태를 저장하고 복원하는 과정을 간편하게 처리할 수 있습니다. 메멘토 패턴은 세 가지 주요 구성 요소로 이루어져 있습니다. 첫째, Originator는 상태를 저장하고 복원하려는 객체입니다. 둘째, Memento(메멘토)는 상태를 저장하는 객체입니다. 셋째, Caretaker는 Memento를 저장하고 관리하는 객체입니다. 이 패턴을 사용하면, Originator 객..
[Design Pattern] Mediator(중재자) 패턴이란? 행위 패턴(Behavioral Pattern) 중재자 패턴(Mediator Pattern)은 객체 지향 소프트웨어 디자인 패턴 중 하나로, 다수의 객체들 간의 상호작용을 조정하는 역할을 수행하는 객체를 정의합니다. 중재자 패턴은 객체들 간의 직접적인 상호작용을 제거함으로써, 객체 간 결합도를 낮추고 유지보수성을 향상시키는 장점을 제공합니다. 중재자 패턴은 일반적으로 다음과 같은 구성 요소로 이루어집니다. 중재자(Mediator) : 다수의 객체들 간의 상호작용을 조정하는 역할을 수행하는 객체입니다. 중재자는 객체 간의 직접적인 상호작용을 처리하고, 객체 간에 메시지를 전달합니다. 동료 객체(Colleague) : 중재자에 의해 관리되는 객체입니다. 동료 객체는 중재자와 상호작용하며, 다른 동료 객체와도 ..
[Design Pattern] Iterator(반복자) 패턴이란? 행위 패턴(Behavioral Pattern) 반복자 패턴(Iterator Pattern)은 컬렉션(Collection) 객체의 요소(element)에 접근하는 방법을 제공하는 패턴입니다. 이 패턴은 컬렉션 객체와 반복자 객체(Iterator)를 분리하여 구현합니다. 컬렉션 객체는 요소를 추가하고 제거하는 책임을 가지고, 반복자 객체는 컬렉션 객체 내의 요소를 하나씩 가져오는 책임을 가집니다. 반복자 패턴을 구현하면, 컬렉션 객체의 구현과 사용자 코드를 분리하여 코드의 재사용성과 유지보수성을 높일 수 있습니다. 또한, 컬렉션 객체 내부 구현을 외부에 노출하지 않으므로 객체의 불변성(Immutability)을 유지할 수 있습니다. 반복자 패턴은 다음과 같이 구성됩니다. Iterator 인터페이스: 반복자 ..

반응형