class Logger { factory Logger(String name) => Logger._internal(name); Logger._internal(this.name); final String name; }
字符串这种书写方式是否成立为所谓的单例模式?
c9qzyr3d1#
你不应该把单例变量作为最终的原因,你的目标是使单例变量在不同的类之间共享相同的值,并且可以从任何地方修改。如果你的单例变量没有被改变,而不是为什么他们在单例中,他们应该在常量中。应该是这样的:
class LoggerSingleton { static final LoggerSingleton _singleton = LoggerSingleton._internal(); factory LoggerSingleton() => _singleton; LoggerSingleton._internal(); String? name; // String name = 'Initial value'; }
字符串并将像这样使用,与创建示例或直接与名称:
void main() { LoggerSingleton().name = 'Initial value'; LoggerSingleton logger = LoggerSingleton(); logger.name; LoggerSingleton().name; }
型这里如果你不想在使用前第一次给予值,可以在单例本身的声明中给出它,这样它就不需要是可空的。
kkbh8khc2#
我使用Riverpod Provider对象作为惰性单例,因为它们是惰性的,并且它们也可以被覆盖以进行测试。这是传统单例模式很难做到的。
2条答案
按热度按时间c9qzyr3d1#
你不应该把单例变量作为最终的原因,你的目标是使单例变量在不同的类之间共享相同的值,并且可以从任何地方修改。
如果你的单例变量没有被改变,而不是为什么他们在单例中,他们应该在常量中。
应该是这样的:
字符串
并将像这样使用,与创建示例或直接与名称:
型
这里如果你不想在使用前第一次给予值,可以在单例本身的声明中给出它,这样它就不需要是可空的。
kkbh8khc2#
我使用Riverpod Provider对象作为惰性单例,因为它们是惰性的,并且它们也可以被覆盖以进行测试。这是传统单例模式很难做到的。