環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16
ダックタイピングとは
特定のクラスと結びつかない、クラスを跨ぐパブリックインターフェースを取り決め実装する作法。
下記の例はbark
メソッドがダックタイプされていると言える。
もっと複雑な実装になってくるとbark
メソッドをmoduleにまとめて共通化する方が良さそう。
class Cat
def bark
puts 'ニャーニャー'
end
end
class Dog
def bark
puts 'ワンワン'
end
end
mike = Cat.new
poti = Dog.new
mike.bark
#=> 'ニャーニャー'
poti.bark
#=> 'ワンワン'
継承よりもダックタイピングを積極的に使うこと
継承が設計上必要でなければ、ダックタイピングで楽しようとのこと。
class Animal
def bark
end
end
class Cat < Animal
def bark
puts 'ニャーニャー'
end
end
class Dog < Animal
def bark
puts 'ワンワン'
end
end
参考