분류 전체보기 116

Observer 패턴

의도옵서버 패턴은 당신이 여러 객체에 자신이 관찰 중인 객체에 발생하는 모든 이벤트에 대하여 알리는 구독 메커니즘을 정의할 수 있도록 하는 행동 디자인 패턴입니다. 문제Customer​(손님) 및 Store​(가게)​라는 두 가지 유형의 객체들이 있다고 가정합니다. 손님은 곧 매장에 출시될 특정 브랜드의 제품​(예: 새 아이폰 모델)​에 매우 관심이 있습니다.손님은 매일 매장을 방문하여 제품 재고를 확인할 수 있으나, 제품이 매장에 아직 운송되는 동안 이러한 방문 대부분은 무의미합니다.매장 방문 vs. 스팸 발송반면 매장에서는 새로운 제품이 출시될 때마다 모든 고객에게 스팸으로 간주할 수 있는 수많은 이메일을 보낼 수 있습니다. 이 수많은 이메일은 일부 고객들을 신제품 출시 확인을 위한 잦은 매장 방문으..

디자인 패턴 2024.09.05

Memento 패턴

의도메멘토는 객체의 구현 세부 사항을 공개하지 않으면서 해당 객체의 이전 상태를 저장하고 복원할 수 있게 해주는 행동 디자인 패턴입니다. 문제텍스트 편집기 앱을 만들고 있다고 상상해보세요. 당신의 편집기는 간단한 텍스트 편집 외에도 텍스트의 서식 지정, 인라인 이미지들의 삽입 등을 할 수 있습니다.어느 날 당신은 사용자들이 텍스트에 수행된 모든 작업을 실행 취소할 수 있도록 하기로 했습니다. 이 실행 취소 기능은 수년에 걸쳐 매우 보편화되었기 때문에 오늘날의 사용자들은 모든 앱에 이 기능이 있을 것이라고 가정합니다. 이 기능을 구현하기 위해 직접 접근 방식을 적용하기로 했습니다. 앱은 모든 작업을 수행하기 전에 모든 객체의 상태를 기록해 어떤 스토리지에 저장합니다. 나중에 사용자가 작업을 실행 취소하기로..

디자인 패턴 2024.09.05

Mediator 패턴

중재자는 객체 간의 혼란스러운 의존 관계들을 줄일 수 있는 행동 디자인 패턴입니다. 이 패턴은 객체 간의 직접 통신을 제한하고 중재자 객체를 통해서만 협력하도록 합니다. 문제고객들의 프로필을 만들고 편집하기 위한 대화 상자가 있다고 가정해 봅시다. 이 대화 상자는 텍스트 필드, 체크 상자, 버튼 등과 같은 다양한 양식 컨트롤들로 구성됩니다.앱이 발전함에 따라 사용자 인터페이스 요소 간의 관계가 혼란스러워질 수 있습니다.일부 양식 요소들은 다른 요소들과 상호 작용할 수 있습니다. 예를 들어, '저는 개가 있습니다' 확인란을 선택하면 개의 이름을 입력하기 위한 숨겨진 텍스트 필드가 나타날 수 있습니다. 또 다른 예시로 데이터를 저장하기 전에 모든 필드의 값들을 검증해야 하는 제출 버튼이 있습니다.요소들은 다..

디자인 패턴 2024.09.05

iterator 패턴

의도반복자는 컬렉션의 요소들의 기본 표현​(리스트, 스택, 트리 등)​을 노출하지 않고 그들을 하나씩 순회할 수 있도록 하는 행동 디자인 패턴입니다. 문제컬렉션은 프로그래밍에서 가장 많이 사용되는 데이터 유형 중 하나이긴 하지만, 객체 그룹의 단순한 컨테이너에 불과합니다.다양한 유형들의 컬렉션들.대부분의 컬렉션들은 그들의 요소들을 간단한 리스트들에 저장하나, 그중 일부는 스택, 트리, 그래프 및 기타 복잡한 데이터 구조들을 기반으로 합니다.그러나 컬렉션이 어떻게 구성되어 있는지를 떠나서, 컬렉션은 그 요소들에 접근할 수 있는 어떤 방법을 다른 코드에 제공해야 합니다. 그래야 다른 코드가 이 요소들을 사용할 수 있습니다. 같은 요소에 반복해서 접근하지 않고 컬렉션의 각 요소를 순회하는 방법이 있을 것입니다..

디자인 패턴 2024.09.05

Command 패턴

의도커맨드는 요청을 요청에 대한 모든 정보가 포함된 독립실행형 객체로 변환하는 행동 디자인 패턴입니다. 이 변환은 다양한 요청들이 있는 메서드들을 인수화 할 수 있도록 하며, 요청의 실행을 지연 또는 대기열에 넣을 수 있도록 하고, 또 실행 취소할 수 있는 작업을 지원할 수 있도록 합니다.  문제당신이 새로운 텍스트 편집기 앱을 개발하고 있다고 상상해 봅시다. 당신이 현재 하는 작업은 편집기의 다양한 작업을 위한 여러 버튼이 있는 도구 모음​(툴바)​을 만드는 것입니다. 당신은 도구 모음의 버튼들과 다양한 대화 상자들의 일반 버튼들에 사용할 수 있는 매우 깔끔한 Button​(버튼) 클래스를 만들었습니다. 앱의 모든 버튼은 같은 클래스에서 파생됩니다. 이 버튼들은 모두 비슷해 보이지만 각각 다른 기능들을..

디자인 패턴 2024.09.04

std::bitset<'비트크기'>

std::bitset은 C++ 표준 라이브러리에서 제공하는 템플릿 클래스인 std::bitset을 이용하여, 고정된 크기의 256개의 비트를 효율적으로 다룰 수 있게 해주는 자료형입니다. std::bitset은 비트 연산을 수행할 때 유용하며, 다음과 같은 특징과 사용법을 가지고 있습니다.주요 특징고정된 크기: std::bitset은 256개의 비트를 저장할 수 있습니다. 크기는 컴파일 타임에 고정되므로, 런타임에 크기를 변경할 수 없습니다.비트 연산 지원: 논리적 비트 연산(AND, OR, XOR), 비트 시프트 연산, 비트 반전 등의 다양한 비트 연산을 지원합니다.비트 접근 및 조작: 특정 비트의 값을 설정, 해제, 토글할 수 있으며, 비트의 개별 값을 쉽게 접근할 수 있습니다.입출력 지원: 비트를 ..

C++ 2024.08.06