반응형 전체 글81 [디자인패턴] 행위 패턴(10) : 전략(Strategy) 목차 전략(Strategy) 전략(Strategy) 디자인 패턴은 행동 디자인 패턴의 하나로, 실행 중에 알고리즘을 선택할 수 있게 해주는 패턴이다. 클라이언트가 직접 알고리즘을 선택할 수 있도록 하거나 알고리즘을 자동으로 선택하게 할 수 있다. 이 패턴의 핵심은 알고리즘의 사용과 알고리즘의 구현을 분리하는 것이다. 이로 인해 동일한 문제를 해결하는 다양한 방법들을 쉽게 교체할 수 있게 해준다. 예를 들어, 정렬이나 필터링과 같은 작업을 다양한 방식으로 구현할 수 있으며, 상황에 따라 가장 적합한 방법을 선택할 수 있다. 전략 패턴의 어원은 군사학에서 유래했다고 볼 수 있다. '전략'이라는 단어는 군대의 운용, 즉 큰 그림을 계획하는 방법을 의미한다. 소프트웨어 설계에서 이 용어는 비즈니스 로직이나 알고.. 2024. 3. 25. [디자인패턴] 행위 패턴(9) : 상태(State) 목차 상태(State) 상태(State) 디자인 패턴은 객체의 내부 상태에 따라 객체의 행동을 변화시키는 패턴이다. 객체가 특정 상태에 있을 때만 수행할 수 있는 행동이 있거나, 상태에 따라 같은 이벤트에 다르게 반응해야 할 때 사용한다. 상태 패턴의 핵심은 상태를 클래스로 캡슐화하고, 객체의 상태 변화에 따라 이러한 상태 클래스들을 교체함으로써 객체의 행동을 동적으로 변경하는 것이다. 패턴의 기본 구성요소 Context(문맥): 현재 상태를 가지고 상태에 대한 사용자의 요청을 상태 객체로 위임한다. State(상태): 객체의 특정 상태에 대한 행동과 전환 조건을 정의하는 인터페이스다. Concrete State(구체 상태): 상태 인터페이스를 구현하는 클래스들로, 구체적인 상태별 행동 로직을 담당한다... 2024. 3. 25. [디자인패턴] 행위 패턴(8) : 발행-구독(Publisher-Subscriber) 목차 발행-구독(Publisher-Subscriber) 발행-구독(영어: Publish-Subscribe) 디자인 패턴은 소프트웨어 아키텍처 패턴의 하나로, 메시지 발행 컴포넌트(발행자)와 메시지 수신 컴포넌트(구독자) 사이 결합도를 낮추기 위해 사용된다. 이 패턴의 핵심은 발행자가 메시지를 누구에게 보내야 하는지 몰라도 되며, 구독자는 어떤 발행자로부터 메시지를 받는지 알 필요가 없다는 데 있다. 즉, 발행자와 구독자 사이에 직접적인 연결 고리가 없어, 시스템의 유연성과 확장성을 향상시킨다. 패턴 미적용 예시 게임 개발 상황을 예로 들어보자. 게임 내에서 특정 이벤트(예: 캐릭터가 레벨업하는 이벤트)가 발생했을 때, 여러 시스템(예: UI, 경험치 로그, 업적 시스템)이 이를 감지하고 반응해야 한다고 .. 2024. 3. 25. [디자인패턴] 행위 패턴(7) : 옵저버(Observer) 목차 옵저버(Observer) 옵저버 디자인 패턴은 객체의 상태 변화를 관찰하는 관찰자들(Observer)에게 변화를 알리기 위해 사용하는 디자인 패턴이다. 어원적으로, '옵저버(Observer)'는 '관찰자'를 뜻하는 영단어로, 이 패턴에서는 한 객체의 상태 변화를 관찰하고, 그 변화에 반응하는 객체들을 의미한다. 이 패턴의 주요 구성 요소는 다음과 같다: Subject: 상태 변화가 발생하는 객체. Observer들을 자신의 리스트에 등록하고, 상태 변화가 있을 때 등록된 Observer들에게 알린다. Observer: Subject의 상태 변화를 관찰하고, 변화가 있을 때 업데이트 받아야 하는 객체들. Subject의 상태 변화에 따라 동작하는 메소드를 구현한다. 패턴 미적용 예시 패턴을 적용하지 .. 2024. 3. 25. [디자인패턴] 행위 패턴(6) : 메멘토(Memento) 목차 메멘토(Memento) 메멘토 디자인 패턴은 객체의 상태를 특정 시점에 캡처하여 나중에 해당 상태로 객체를 복원할 수 있도록 하는 디자인 패턴이다. 이 패턴의 명칭은 '기억을 보존하는 것'을 의미하는 라틴어 'Memento'에서 유래했다. 이 패턴은 주로 되돌리기 기능이나 스냅샷, 상태 복원 기능이 필요할 때 유용하게 사용된다. 메멘토 패턴은 크게 세 가지 기본 구성요소로 이루어져 있다: Originator(발생자): 자신의 상태를 저장하거나 복원할 수 있는 객체. Memento(메멘토): 발생자의 상태를 저장하는 객체. 발생자 외에는 이 객체에 접근할 수 없어야 한다. Caretaker(케어테이커): 메멘토를 저장하는 객체. 메멘토의 내용을 조작하거나 직접 접근하지 않고, 메멘토를 관리(저장하거나.. 2024. 3. 25. [디자인패턴] 행위 패턴(5) : 중재자(Mediator) 목차 1. 중재자(Mediator) 중재자(Mediator) 디자인 패턴은 행동 패턴의 하나로, 객체 간의 복잡한 통신을 캡슐화하여 간소화하는 데 목적을 둔다. 패턴의 어원은 '중재자' 또는 '조정자'라는 뜻의 'Mediator'에서 유래했다. 이 패턴의 핵심 아이디어는 여러 객체 간의 직접적인 참조와 통신을 줄이고, 대신 하나의 중재자 객체를 통해 모든 통신이 이루어지게 하는 것이다. 이로 인해 각 객체는 다른 객체들과의 결합도를 낮추며, 코드의 유지 보수와 확장성을 개선할 수 있다. 중재자 패턴의 기본 구성 요소는 다음과 같다: Mediator: 중재자 역할을 하는 인터페이스. 객체 간의 통신 규약을 정의한다. ConcreteMediator: Mediator 인터페이스를 구현하는 구체적인 중재자 클래.. 2024. 3. 25. [디자인패턴] 행위 패턴(4) : 반복자(iterator) 목차 반복자(iterator) 반복자(Iterator) 디자인 패턴은 객체 지향 프로그래밍에서 컬렉션 내의 요소들에 순차적으로 접근할 수 있는 방법을 제공한다. 이 패턴의 명칭은 '반복'이라는 뜻의 'Iterate'에서 유래했다. 컬렉션의 구현 방법을 알 필요 없이 그 내용을 순회할 수 있게 해주며, 이는 컬렉션의 구조 변경이 클라이언트 코드에 영향을 미치지 않도록 한다. 기본적인 구성요소로는 Iterator 와 Aggregate 인터페이스가 있으며, Iterator 인터페이스는 순회 로직을, Aggregate 인터페이스는 반복자 객체를 생성하는 메서드를 정의한다. 1. 패턴 미적용 예시 게임에서 여러 몬스터를 관리하는 경우를 생각해보자. 패턴을 적용하지 않았을 때는 몬스터 리스트를 직접 순회하며 각 몬.. 2024. 3. 25. [디자인패턴] 행위 패턴(3) : 인터프리터(Interpreter) 목차 인터프리터(Interpreter) 인터프리터 디자인 패턴은 주어진 언어에 대해 그 언어의 문법에 대한 표현을 정의하고, 이를 사용하여 해당 언어의 문장을 해석하는 패턴이다. 이 패턴의 어원은 프로그래밍 언어의 '인터프리터'에서 비롯되었다. 인터프리터란 코드를 직접 실행하는 프로그램이나 환경을 의미하는데, 이 패턴은 이러한 개념을 디자인 패턴에 적용한 것이다. 즉, 어떤 입력을 받아 이를 분석하고 실행하는 구조를 디자인 패턴 형태로 구현한 것이다. 컴퓨터가 입력받은 수식을 트리 형태로 만들고 후위 연산을 적용해 실행시키는 것과 마찬가지로 식을 만들어두고 저장했다가 하나씩 실행하는 상황에 사용하면 적합하다. 패턴 미적용 예시 C#을 사용한 간단한 게임 개발 상황에서 인터프리터 패턴을 적용하지 않은 경우.. 2024. 3. 25. [디자인패턴] 행위 패턴(2) : 커맨드(Command) 목차 커맨드(Command) 커맨드 디자인 패턴은 행동 디자인 패턴의 한 종류로, 요청 자체를 캡슐화하는 방식이다. 이 패턴의 목적은 요청을 발생시키는 객체와 요청을 처리하는 객체 사이의 결합도를 줄이는 것이다. 이를 통해 요청을 큐에 저장하거나, 로그로 기록하고, 작업을 취소할 수 있는 유연성을 제공한다. "커맨드(Command)"라는 용어는 말 그대로 '명령'을 의미한다. 이 패턴에서 '명령'은 수행될 모든 동작(작업)을 객체로 캡슐화하는 것을 말한다. 객체 지향 프로그래밍에서는 이러한 명령을 객체의 형태로 표현하여, 실행할 작업과 관련된 모든 정보를 함께 묶어 관리한다. 패턴 미적용 예시 코드 게임 개발에 있어서, 커맨드 패턴을 적용하지 않고 직접 객체의 메소드를 호출하여 명령을 수행하는 방식은, .. 2024. 3. 25. 이전 1 ··· 3 4 5 6 7 8 9 다음 반응형