Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로토타입
- 팩터리 메서드
- 흐름식 빌더
- 디자인패턴
- 모던C++디자인패턴
- 동적 데코레이터
- 디자인 패턴
- 컴포지트 패턴
- 싱글턴
- 프로토타입 중복처리
- 브릿지
- 팩터리
- 브릿지 패턴
- 내부 팩터리
- 컴포지트
- 프로토타입 패턴
- 단순한 빌더
- 싱글톤 패턴
- 추상 팩터리
- 그루비 스타일 빌더
- 싱글턴 패턴
- 빌더 패턴
- 데커레이터
- 팩터리 패턴
- 컴포지트 빌더
- 빌더
- 싱글톤
- 동적 데커레이터
- 함수형 팩터리
- 데커레이터 패턴
Archives
- Today
- Total
GGym's Practice Notes
5-2. 싱글턴_모노스테이트 본문
모노스테이트는 싱글턴의 변형이다.
겉보기엔 일반 클래스 같지만 싱글턴처럼 동작한다.
class Printer{
static int id;
public:
int get_id() const{ return id;}
void set_id(int value) { id = value;}
};
static 데이터를 이용하여 get/set 멤버함수가 구현되어 있다.
문제는 사용자가 일반 클래스로 알고 인스턴스를 만들어 다른 ID를 부여하지만 두 객체의 ID는 모두 같아진다.
모노스테이트의 장단점
장점
- 상속받기 쉬워 다형성을 활용할 수 있다.
- 생존 주기가 적절히 잘 정의된다.
- 시스템에서 사용 중인 이미 존재하는 객체를 수정하여 이용할 수 있다.
단점
- 코드 깊숙이 손을 댄다. (일반 객체를 모노스테이트로 변환하는 것은 간단하지 않다.)
- static 멤버를 사용하기 때문에 실제 객체가 인스턴스화되어 사용되는지와 관계없이 항상 메모리를 차지한다.
- 클래스의 필드들이 항상 get/set 멤버 함수를 통해서만 접근되는 것으로 가정한다.
'Design Pattern > Modern C++ 디자인패턴' 카테고리의 다른 글
6-2. 어댑터_일시적 어댑터 (0) | 2020.05.18 |
---|---|
6-1. 어댑터_어댑터 패턴 (0) | 2020.05.07 |
5-1. 싱글턴_전역객체/전통구현 (0) | 2020.04.28 |
4-3. 프로토타입_프로토타입 팩터리 (0) | 2020.04.22 |
4-2. 프로토타입_직렬화 (0) | 2020.04.17 |