接口类
abstract class Animal {
late String name;
void eat() {}
}
子类
class Dog implements Animal{
void eat() {
print("Dog eat");
}
late String name;
}
class Cat implements Animal{
void eat() {
print("cat eat");
}
late String name;
}
工厂类
在Flutter中动态加载并执行一个文件夹下所有类的方法并不像Java那样直接(例如通过反射机制),因为Dart和Flutter主要是静态编译的,而且不鼓励运行时动态类加载。但是,你可以通过一种设计模式,比如工厂模式,来手动管理这些类的实例化和调用。
import 'animal.dart';
import 'dog.dart';
import 'cat.dart';
Map<String, Animal> _animalInstances = {};
class AnimalFactory {
static Future<void> initAnimals() async {
// 在这里手动注册所有动物类的实例
_animalInstances['Dog'] = Dog();
_animalInstances['Cat'] = Cat();
}
static void makeAllSay() {
_animalInstances.forEach((key, value) {
value.eat();
});
}
}
使用
ElevatedButton(
onPressed: () async{
await AnimalFactory.initAnimals();
AnimalFactory.makeAllSay();
},
child: const Text("执行"),
)