デザインパターンdecorator

decoratorパターンです
継承を利用せずに、委譲を利用する
同じinterfaceを持つインスタンスを保持する
多段の継承を利用するより変更に強い


class Icecream
def get_name; end
def how_sweet; end
end

class VanillaIcecream

def get_name
return "バニラアイスクリーム"
end

def how_sweet
return "抹茶味"
end
end

class CasheNutsToppingIcecream

def initialize(ice)
@ice = ice
end

def get_name
return "カシューナッツ" + @ice.get_name
end

def how_sweet
return @ice.how_sweet
end
end

i = VanillaIcecream.new
c = CasheNutsToppingIcecream.new(i)
puts c.get_name
puts c.how_sweet