Несколько mixin у одного класса в Dart
У одного класса может быть несколько mixin.
Их перечисляют через запятую после with.
Так удобно собирать поведение из отдельных
фрагментов, не выстраивая длинную цепочку
наследования.
Mixin Helper1 хранит заголовок,
а Helper2 - число лайков:
mixin Helper1 {
String title = "";
String getTitle() {
return title;
}
}
mixin Helper2 {
int likes = 0;
int getLikes() {
return likes;
}
}
class Post with Helper1, Helper2 {}
Создадим объект, заполним поля и проверим результат:
var post = Post();
post.title = "note";
post.likes = 3;
print(post.getTitle());
print(post.getLikes());
Если два mixin объявляют один и тот же метод,
например show, побеждает тот, который
стоит правее в списке with. Порядок
важен: при записи with Helper1, Helper2
сработает show из Helper2:
mixin Helper1 {
void show() {
print("from Helper1");
}
}
mixin Helper2 {
void show() {
print("from Helper2");
}
}
class Post with Helper1, Helper2 {}
Создадим объект и вызовем метод:
var post = Post();
post.show();
Сделайте три mixin Helper, Helper1
и Helper2. В первом пусть будет метод
method1, возвращающий 1, во втором -
method2, возвращающий 2, в третьем -
method3, возвращающий 3.
Сделайте класс Employee с mixin
Helper, Helper1 и Helper2.
Добавьте публичный метод getSum,
который возвращает сумму результатов
method1, method2 и method3.