意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建
python实现
class Slog:
instance = None
def __new__(cls, *args, **kwargs):
print("Singleton log system by Garry Guo newing")
if(cls.instance == None):
cls.instance = object.__new__(cls)
return cls.instance
else:
return cls.instance
def __init__(self,format):
print(" init method called ")
self.format = format
slog1 = Slog("txt")
slog2 = Slog("screen")
print(slog1.format)
print(slog2.format)
print(id(slog1))
print(id(slog2))
截图
dart 实现
main(List<String> args) {
var s1 = Slog();
s1.format = "screen";
var s2 = Slog();
s2.format = "txt";
print(s1.format);
print(s2.format);
print(identical(s1, s2));
print(s1 == s2);
}
class Slog {
// 单例
static final Slog _instance = Slog._();
// 私有构造器
Slog._();
String format = "";
// 工厂方法
factory Slog() {
return _instance;
}
}
实现截图