일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Factory method pattern
- Queue
- 트리
- BFS
- 관찰자(Observer) 패턴
- 유니온-파인드
- 생성패턴
- Union-Find
- flyweight pattern
- 명령패턴
- 깊이 우선 탐색
- 스택
- 팩토리패턴
- C++ STL 정리
- command pattern
- 경량 패턴
- 비교 기반 정렬 알고리즘
- 외적
- Trie
- Unreal Collision
- 디자인패턴
- 정렬 알고리즘
- 분포 기반 정렬 알고리즘
- 동적 계획법
- 자료구조
- 두 직선사이 교점
- Abstract Factory pattern
- 트리순회
- object channel
- Set
- Today
- Total
목록디자인패턴 (4)
KimMK
디자인 패턴 중 구조 패턴인 경량 패턴은 객체를 공유해 메모리 사용량을 줄이는 것을 목적으로 한다. 즉, 한개의 고유 상태를 다른 객체들에서 공유하게 만들어 메모리 사용량을 줄이는 것이다. 경량 패턴은 최적화와 밀접한 관계가 있으며 공장에서 같은 제품을 찍어내며 생산하듯이 대량의 데이터를 찍어내기 위해 사용한다. 내용이 같은 객체가 있으면 새로 객체를 생성하지 않고 기존의 객체를 공유한다 예를 들어, 게임 엔진인 Unreal에서 폴리지와 같은 툴을 사용할 때 풀과 잔디, 조약돌과 같은 애셋을 이용해 폴리지를 적용하려고 할 때 애셋을 하나하나 mesh, texture와 같은 정보를 렌더링하게 되면 엄청난 오버헤드를 초래하게 된다. 그래서 언리얼 엔진의 애셋은 기본적으로 경량 패턴이 적용되는데, 경량 패턴은..
디자인 패턴은 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴이다. 모듈의 세분화된 역할이나 모듈간의 인턴페이스 구현 방식을 설계할 때 참조할 수 있는 전형적인 해결 방식을 정리한 것으로 디자인 패턴을 통해 설계 문제, 해결 방법, 해결책을 언제 적용해야 할 지, 그 결과로 무엇인지 등을 알 수 있다. 1995년 GoF(Gang of Four)라고 불리는 Erich Gamma, Richard Helm, Ralph Johnson, John Vissides가 처음으로 디자인 패턴을 구체화하였다. GoF의 디자인 패턴에는 생성 패턴 5개, 구조 패턴 7개, 행위 패턴 11개로 총 23개의 패턴으로 구성된다. 디자인 패턴을 사용하여 개발할 경우, 개발의 효율성, 유지보수성..
디자인 패턴 중 행위 패턴인 명령 패턴은 요구사항을 객체로 캡슐화하는 것이다. 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴으로 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 특징을 갖는다. 즉, 함수 호출 자체를 객체로 감싸 캡슐화 한 것이다. 함수 호출을 객체로 만들었기 때문에 디커플링으로 코드가 유연하며, redo(재실행), undo(실행 취소), 로깅, 입력키 변경 등과 같은 기능을 구현하는데 유용하다. 간단한 예시 리모컨을 제어하는 프로그램을 만든다고 가정할 때, 이 프로그램은 다양한 장치(에어컨, TV...)를 제어하는데 사용한다. class Device { public: virtua..
디자인 패턴 중 생성 패턴인 팩토리 패턴은 팩토리 메서드 패턴과 추상 팩토리 패턴으로 나눌 수 있다. 1. 팩토리 메서드 패턴 팩토리 메서드 패턴은 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식으로 상위에서 인스턴스를 만드는 방법만 결정하고 하위에서 데이터 생성을 조작하는 함수들을 오버라이딩해서 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 특성을 갖는 디자인 패턴이다. 즉, 클래스의 인스턴스를 만드는 일을 하위 클래스에게 맡기는 것이다. 이 패턴은 객체를 생성하는 방식이나 생성하는 객체의 종류가 변해도 클라이언트 코드를 수정하지 않고 객체를 생성할 수 있게 한다. 간단한 예시 class Shape { public: virtual vo..