🎉

【Dart】mixinについて学習してみた

に公開

なぜ、勉強しようと思ったのか?

実務でよく使われていて自分でも使いこなせるようになりたかったから。

mixinについて

Mixins are a way of defining code
that can be reused in multiple class hierarchies.
They are intended to provide member implementations en masse.
To use a mixin,
use the with keyword followed by one or more mixin names.

複数のクラス階層で再利用できるコードを定義する方法。
メンバー実装をまとめて提供することを目的としている。
ミックスインを使用するには、withキーワードに続けて1つ以上のミックスイン名を指定する。

どんな利点があるのか

・単一継承を回避できる。
基本的にはextendsで継承を行うが、mixinを用いると複数の機能を合成することができる

extendsの場合

class BraveMan extends StatelessWidget{
}

extendsを用いてStatelessWidgetを継承している。

mixinを使用した場合

mixin Fight {
  void fight(String message) {
    print('[fight] $message');
  }
}

mixin Strategy {
  void strategy(String message) {
    print('[strategy] $message');
  }
}

mixin Magic {
  void magic(String message) {
    print('[magic] $message');
  }
}

mixin Item {
  void item(String message) {
    print('[item] $message');
  }
}

class BraveMan with Fight, Strategy, Magic, Item {
  void command() {
    fight('たたかう');
    strategy('さくせん');
    magic('まほう');
    item('アイテム');
  }
}

mixinを用いると複数の機能を合成することができる。

参考文献

https://dart.dev/language/mixins

Discussion