Monostate

모노스테이트(Monostate)
모노스테이트는 싱글턴 패턴의 변형으로, 일반 클래스와 동일하게 생겼지만 동작은 싱글톤처럼 한다.
class Printer{
static int id;
public:
int get_id() const {return id;}
void set_id(int value){ id=value; }
};
보통 클래스처럼 보이지만, 인스턴스를 생성할 때, 모든 인스턴스의 id는 메모리상 하나의 데이터를 가르킨다.

모노스테이트를 사용하면, 상속받기가 쉬워 다형성을 활용할 수 있으며,
생존주기도 적절히 잘 정의된다.(복수의 객체가 존재하는 것이 문제가 되지 않음)

하지만, 모노스테이트의 static 멤버는 객체의 인스턴스화 유무에 관계없이 항상 메모리를 차지한다.