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 Person,mixin Able1 on Person
然後class Teacher extends Person with Able1,Able2,問題就得到了解決