- あるクラスに対し、同じ静的データを使うインスタンスを復数作成できる
- 同じデータを共有する
- 単一性を透過
- Singletonとの違い
- オブジェクトの初期化タイミングが制御できない
- Singletonオブジェクト自体に状態の保存ができない
- Singletonは単一構造を強制、Monostateは単一動作を強制
#include
class Monostate{
public:
void SetValue(const int n){ val = n; }
const int GetValue()const{ return val; }
private:
static int val;
};
int Monostate::val;
int main(){
Monostate ms1,ms2,ms3;
ms1.SetValue(1);
std::cout << "Set 1" << std::endl;
std::cout << ms1.GetValue() << std::endl;
std::cout << ms2.GetValue() << std::endl;
std::cout << ms3.GetValue() << std::endl;
ms2.SetValue(2);
std::cout << "Set 2" << std::endl;
std::cout << ms1.GetValue() << std::endl;
std::cout << ms2.GetValue() << std::endl;
std::cout << ms3.GetValue() << std::endl;
ms3.SetValue(3);
std::cout << "Set 3" << std::endl;
std::cout << ms1.GetValue() << std::endl;
std::cout << ms2.GetValue() << std::endl;
std::cout << ms3.GetValue() << std::endl;
return 0;
}
出力
Set 1
1
1
1
Set 2
2
2
2
Set 3
3
3
3