複数のクラスに同じような機能が必要な場合
is-aの関係になくても複数のクラスにまたがって同じような機能が必要になるケースは存在します。
継承の使用を避ける場合にモジュールを使う
製品はユーザであるまたはユーザーは製品であるという関係が(is-aの関係)が成り立たない
のであれば、継承の使用は避ける
べきです。
その時にモジュール
を使う。
モジュールのメソッドはどんなクラスにも使える
モジュールに定義したメソッド
をProductクラスでもUserクラスでも呼び出すことができました。
モジュールをクラスにinclude
して機能を追加することをミックスイン
という。
ミックスイン先のクラスは基本的にどんなクラスでもOK
ミックスインのもう一つの方法
モジュールをクラスにミックスインするもう一つの方法としてextend
がある。
モジュール内のメソッドをそのクラスの特異メソッド(つまりクラスメソッド)にする
ことができる。
出典