Flutter:继承接口类,并将多个子类实例化

接口类

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("执行"),
 )

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 19:52:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 19:52:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 19:52:03       82 阅读
  4. Python语言-面向对象

    2024-05-02 19:52:03       91 阅读

热门阅读

  1. 使用 Python 和 Keras 实现卷积神经网络

    2024-05-02 19:52:03       40 阅读
  2. 13、Flink 的 Operator State 详解

    2024-05-02 19:52:03       28 阅读
  3. C#面:ASP.NET 的身份验证方式有哪些

    2024-05-02 19:52:03       28 阅读
  4. 认识异常,自定义异常

    2024-05-02 19:52:03       27 阅读
  5. 创建并管理Python虚拟环境:深入理解venv

    2024-05-02 19:52:03       25 阅读
  6. python 关键字(import)

    2024-05-02 19:52:03       31 阅读
  7. Spring中控制反转究竟反转的什么

    2024-05-02 19:52:03       26 阅读
  8. DNS解析过程

    2024-05-02 19:52:03       37 阅读
  9. 亲子公园实景剧本杀小程序系统开发

    2024-05-02 19:52:03       31 阅读
  10. C# 程序启动另外一个exe的时候传参数

    2024-05-02 19:52:03       34 阅读
  11. 图搜索算法详解

    2024-05-02 19:52:03       31 阅读
  12. 【AIGC半月报】AIGC大模型启元:2024.04(下)

    2024-05-02 19:52:03       33 阅读
  13. 如何在前端展示后端返回的pdf Base64格式字符串

    2024-05-02 19:52:03       28 阅读
  14. 第二弹:走进CSS世界,学习记录

    2024-05-02 19:52:03       30 阅读
  15. 【C++】循环语句中引起的循环引用问题

    2024-05-02 19:52:03       37 阅读