Dart中BaseUseCase泛型类的In、Out类型参数含义是什么
BaseUseCase <In,Out>中In、Out的含义与作用 这两个是Dart泛型语法里的类型占位参数,是分层架构中业务用例基类的通用写法,核心作用是统一约束所有业务用例的输入、输出类型规范,提前做类型校验避免类型不匹配的问题。
In:对应业务用例执行时需要传入的入参类型。比如实现「获取用户详情」用例时,入参需要int类型的用户ID,就可以在继承基类时把In指定为int;如果某个用例不需要传入任何参数,直接将In指定为void即可。Out:对应业务用例执行完成后返回的结果类型。还是以获取用户详情为例,用例执行完成后要返回自定义的User实体对象,就把Out指定为User;如果用例执行完不需要返回任何结果,同样可以将Out指定为void。
你可以参考下面的实际实现代码理解:
// 自定义用户实体类 class User { final int id; final String name; User(this.id, this.name); } // 实现获取用户详情用例:入参为int类型用户ID,返回值为User类型 class GetUserDetailUseCase extends BaseUseCase<int, User> { @override Future<User> call(int userId) async { // 此处写具体业务逻辑,比如调用数据仓库拉取用户信息 return User(userId, "测试用户"); } } // 无入参用例示例:获取应用全局配置,不需要传参,返回配置Map class GetGlobalConfigUseCase extends BaseUseCase<void, Map<String, dynamic>> { @override Future<Map<String, dynamic>> call(void params) async { return {"themeMode": "dark", "appVersion": "1.0.0"}; } }
这种泛型基类写法的优势很明显:所有业务用例都遵循统一的调用规范,编译器会自动做类型检查,如果你传错入参类型、用错误的类型接收返回值,会直接在编译阶段报错,不用等到运行时才发现类型相关bug。
内容的提问来源于stack exchange,提问作者Ahmed Shama
相关产品推荐
相关产品推荐

