drm*_*irk 2 oop singleton dart flutter
class Peoples {
int id;
String name;
static final Peoples _inst = Peoples._internal();
Peoples._internal();
factory Peoples() {
return _inst;
}
}
Run Code Online (Sandbox Code Playgroud)
我有这个单例课程。这样可以确保只创建一个类的实例。因此,即使有人尝试实例化它,他们也将使用相同的实例。我可以创建和设置值,例如:
Peoples ps1 = Peoples();
Peoples ps2 = Peoples();
ps1.id = 1;
ps1.name = "First";
ps2.id = 2;
ps2.name = "Second";
Run Code Online (Sandbox Code Playgroud)
是否可以实例化和设置值,例如:
Peoples ps1 = Peoples(1, "First");
Peoples ps2 = Peoples(2, "Second");
Run Code Online (Sandbox Code Playgroud)
因此,现在“ ps1”和“ ps2”都将具有(2,“ Second”)。
小智 6
当然!您需要将参数传递给factory方法,然后需要使用引用的实例来更新属性。
例如,你有
class Peoples {
int id;
String name;
static final Peoples _inst = Peoples._internal();
Peoples._internal();
factory Peoples() {
return _inst;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您应用我的解决方案,那么您有
class Peoples {
int id;
String name;
static final Peoples _inst = Peoples._internal();
Peoples._internal();
factory Peoples({int id, String name}) {
_inst.id = id
_inst.name = name
return _inst;
}
}
Run Code Online (Sandbox Code Playgroud)
与此有关的您的问题应回答有关工厂和参数访问的更多信息
https://dart.dev/guides/language/language-tour
工作实例
class Peoples {
int id;
String name;
static final Peoples _inst = Peoples._internal();
Peoples._internal();
factory Peoples(int id, String name) {
_inst.id = id;
_inst.name = name;
return _inst;
}
}
void main() {
print("Instance of = " + Peoples(0, "Dylan").name);
print("Instance of = " + Peoples(1, "Joe").name);
print("Instance of = " + Peoples(2, "Maria").name);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
754 次 |
| 最近记录: |