我正在尝试使用装饰器模式方法来解决这个问题。我用这个和这个作为参考。我试图总结适用于我创建的项目的税,但我只能获得最后一个未包装对象应用的税。
module SalesTaxDeco
class Item
attr_accessor :price
def initialize(price)
@price = price
end
def sales_tax
end
end
class SalesTax
def price
@component.price
end
def initialize(component)
@component = component
end
def sales_tax
((@component.price * 0.10)*(1/0.05).ceil)/(1/0.05)
end
end
class ImportDuty
def price
@component.price
end
def initialize(component)
@component = component
end
def sales_tax
((@component.price * 0.5)*(1/0.05).ceil)/(1/0.05)
end
end
end
我创建了一个项目
def test_imported_perfume_is_taxed
item = Item.new 47.50
assert_equal 7.15, SalesTax.new(ImportDuty.new(item)).sales_tax
end
但我只得到 4.75 作为答案。是什么赋予了?我哪里错了?
谢谢。