Blog

Примеси Mixins в Dart

Mixed colors

Примесь, или Mixin в языке Dart – это класс, описывающий некоторое поведение. Он чем-то напоминает интерфейс, однако правила его использования несколько отличаются. Примеси не наследуются, а как бы подключаются, «примешиваются» к коду класса, поэтому и называются примесями. Отличие от интерфейса в Java заключается в том, что методы примеси уже не надо переопределять.

Посмотрим на примере. Предположим, нам нужно описать музыканта, который умеет играть разные стили музыки.

// некий абстрактный музыкант. Скрытый интерфейс содержит метод play()
class Musician {
  // В интерфейсе
  final instrument;

  // Не в интерфейсе - это конструктор
  Musician(this.name);

  // В интерфейсе
  void play() => 'Hi, I can play $instrument';
}

class Guitarist implements Musician with Jazz, Rock, Funk {
  get name => 'Guitar';
  void play(String arg) => 'Hi, I can play $arg by $instrument';
}

Гитарист (Guitarist) имплиментирует Музыканта (Musician) и умеет играть разные стили. А вот как раз стили мы опишем как примеси:

// примесь Rock
mixin Rock {
	bool knowsHowToPlayACDC = true;

	void playPopMusic(){
		if(knowsHowToPlayACDC){
			play("TNT")
		}
	}
}

// примесь Jazz
mixin Jazz {
	bool knowsHowToPlayEllington = true;

	void playJazzMusic(){
		if(knowsHowToPlayEllington){
			play("Take the A Train")
		}
	}
}

// примесь Funk
mixin Funk {
	bool knowsHowToPlayBrown = true;

	void playFunkMusic(){
		if(knowsHowToPlayBrown){
			play("I FEEL GOOD!")
		}
	}
}

Таким образом, мы примешали стили музыки в виде примесей к классу музыканта, тем самым расширив его функциональность.

Эта статья — из книги Быстрый старт Flutter-разработчика

Please follow and like us:
error

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *