singleton 모델과 일반 모델 클래스를 생성한다
class SingletonModel{
static final SingletonModel _singletonModel = SingletonModel._internal();
int count = 0;
factory SingletonModel() => _singletonModel;
SingletonModel._internal();
}
class NormalModel{
int count = 0;
NormalModel();
}
singleton 모델과 normal 모델을 각각 2개로 생성한 후 값을 1증가하는 코드를 만들어준다
void main(){
SingletonModel _firstSingleton = SingletonModel();
SingletonModel _secondSingleton = SingletonModel();
NormalModel _firstNormal = NormalModel();
NormalModel _secondNormal = NormalModel();
print("first singleton : ${_firstSingleton.count}");
print("second singleton : ${_firstSingleton.count}");
print("first normal : ${_firstNormal.count}");
print("second normal : ${_secondNormal.count}");
_firstSingleton.count++;
_secondSingleton.count++;
_firstNormal.count++;
_secondNormal.count++;
print("-----------------increment--------------------");
print("first singleton : ${_firstSingleton.count}");
print("second singleton : ${_firstSingleton.count}");
print("first normal : ${_firstNormal.count}");
print("second normal : ${_secondNormal.count}");
}
출력결과는 아래와 같이 출력이 된다
여기서 보면 normal 모델은 서로 다른 인스턴스화가 진행 되지만 singleton 모델은 하나의 인스턴스만
생성하게 되는 디자인 패턴이다
그래서 singleton 모델을 2개로 생성을 했지만 하나의 인스턴스기 때문에 2가 증가된 것이다
first singleton : 0
second singleton : 0
first normal : 0
second normal : 0
-----------------increment--------------------
first singleton : 2
second singleton : 2
first normal : 1
second normal : 1