patterns/singleton.dart

38 lines
990 B
Dart
Raw Normal View History

2022-03-29 09:52:34 +03:00
//в однопоточном приложении будет единственный экземпляр некоторого класса,
//и предоставляющий глобальную точку доступа к этому экземпляру.
2022-03-01 10:30:23 +03:00
class Me {
static final Me _singleton = new Me._internal();
2022-03-29 09:52:34 +03:00
static final String _name = "Андрей";
2022-03-01 10:30:23 +03:00
factory Me() {
return _singleton;
}
static String get name => _name;
2022-03-29 09:52:34 +03:00
2022-03-01 10:30:23 +03:00
@override
2022-03-29 09:52:34 +03:00
String toString() => "Привет, меня зовут $name.";
2022-03-01 10:30:23 +03:00
Me._internal();
}
void main() {
var tyler = Me();
var anotherTyler = Me();
2022-03-29 09:52:34 +03:00
2022-03-01 10:30:23 +03:00
print(tyler);
print(anotherTyler);
var samenessCheck = identical(tyler, anotherTyler)
2022-03-29 09:52:34 +03:00
? "Мы один и тот же ${Me.name}."
: "Мы даже не похожи.";
2022-03-01 10:30:23 +03:00
print(samenessCheck);
/*
2022-03-29 09:52:34 +03:00
Привет, меня зовут Андрей.
Привет, меня зовут Андрей.
Мы один и тот же Андрей.
2022-03-01 10:30:23 +03:00
*/
}