# An adapter helps two incompatible interfaces to work together. This is the # real world definition for an adapter. Interfaces may be incompatible but the # inner functionality should suit the need. The Adapter design pattern allows # otherwise incompatible classes to work together by converting the interface # of one class into an interface expected by the clients. class Adaptee def walk 'walk_as_adaptee' end end class Adaptor attr_reader :adaptee def initialize @adaptee = Adaptee.new end def walk adaptee.walk + ' and_sing_song_as_adaptor' end end # Usage adaptor = Adaptor.new adaptor.walk # => walk_as_adaptor and_sing_song_as_adaptor