Dart的命名构造方法与命名工厂构造方法
命名构造方法
命名构造方法:[类名+.+方法名]
使用命名构造方法为类实现多个构造方法
shell
Student.cover(Student stu, this._school) : super(stu.name, stu.age) {
print('命名构造方法');
}使用方法
shell
Student student1 = Student.cover(student, '211');
print('student1:${student1.toString()}');命名工厂构造方法
命名工厂构造方法:factory [类名+.+方法名]
shell
//它可以有返回值,而且不需要将类的final变量作为参数,是提供一种灵活获取类对象的方式。
factory Student.stu(Student stu) {
return Student(stu._school, stu.name, stu.age,
city: stu.city, country: stu.country);
}使用方法
shell
Student student2 = Student.stu(student);
print('student2:${student2.toString()}');工厂构造方法
工厂构造方法:不仅仅是构造方法,更是一种模式,有时候为了返回一个之前已经创建的缓存对象,原始的构造方法已经不能满足要求,那么可以使用工厂模式来定义构造方法
shell
class Logger {
static Logger? _cache;
///工厂构造方法
factory Logger() {
_cache ??= Logger._internal();
return _cache!;
}
Logger._internal();
void log(String msg) {
print(msg);
}
}使用方法
shell
Logger logger1 = Logger();
Logger logger2 = Logger();
print('logger1 == logger2 :${logger1 == logger2}');
剑鸣秋朔