これと似たような質問が以前にもありましたが、モジュール mixin を使用する代わりにコンポジションを使用することについて具体的に質問しています。
class Helper
def do_somthing
end
end
クラスを「使用」する必要があるが、それを継承しない場合は、単純に作成して使用します。
class MyStuff
def initialize
helper = Helper.new
helper.do_something
end
end
このためのモジュールを作成したい理由は次のとおりです。
module Helper
def do_something
end
end
class MyStuff
include Helper
end
私が見る唯一の違いはHelper
、モジュールを使用すると、周りに多くのオブジェクトが存在しないことです。しかし、より多くのオブジェクトが横たわっているのに比べて、より大きなオブジェクトが少ないということは何もありません。
さらに、将来サブクラス化する必要があるかどうかもわかりません。では、ライブラリのユーザーがモジュール mixin を使用するか、コンポジションを使用するかをどのように判断すればよいでしょうか?