Flutter mixins(混入)浅析

Flutter mixins(混入)浅析

抽空复习了下dart 发现了mixins很有意思,特此记录
原文:https://blog.csdn.net/weixin_44259356/article/details/106525644

什么是Mixins

Mixins are a way of reusing a class’s code in multiple class hierarchies.
混入是一种在多个类层次结构中重用类代码的方法。
类似于继承(extends),接口实现(implements)。

定义

mixin A{
  void a(){
    print("XXX");
  }
}

为什么要用Mixins

首先引入一个问题:
有一个类叫老师:class Teacher,他有一个实例A,A平时要教学生唱歌,则继承歌唱老师:class SingingTeacher,A还要教跳舞,再继承跳舞老师:class DancingTeacher,可没法多继承啊,因为所有的类都来自于object,不过我们可以让跳舞老师继承歌唱老师,然后再继承歌唱老师,不过这样一来歌唱老师就不是原来我们要的歌唱老师了,他还得会跳舞。
继承不行,实现接口呢?
先实现歌唱老师interface SingingTeacher,再实现interface DancingTeacher,乍一看好像没什么问题,但是设想一下:唱歌老师会民俗歌曲,也会流行歌曲,跳舞老师会探戈,踢踏。A老师如果只需要民俗和探戈,也必须实现流行和踢踏。都好像不太好
Mixins,应运而生
我们可以定义一个mixin Able1,拥有能力民俗,再定义个mixin Able2,拥有能力探戈 然后组合它们:class Teacher with Able1,Able2完美解决

on限定类型

最后我们还可以限定下只有人才能唱歌跳舞,mixin Able1 on Personmixin Able1 on Person
然后class Teacher extends Person with Able1,Able2,问题就得到了解决

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章