【发布时间】:2011-12-22 02:20:42
【问题描述】:
您好,我的任务是构建一个具有以下简介的应用程序。
实现一个接口,根据促销规则计算价格。
co = Checkout.new(promotional_rules)
co.scan(item)
co.scan(item)
price = co.total
基本上,根据设置的促销规则,某些商品会相应打折。
我收到了一些关于我的代码的反馈,指出我已经封装了一组promotion_rules,然后将这些规则公开为一个数组——糟糕的OO
我最初创建了一个promotion_rules 对象,其中包含一组规则。
def initialize
@rules = []
end
def addrule(rule)
@rules.push(rule)
end
然后在我的结帐对象中,我有已设置并传递给初始化程序的promotion_rules 对象。我遍历包含在promotion_rules 对象中的规则数组,并将它们应用于结帐对象扫描的项目。
def initialize(promotionalrules=Promotionalrules.new)
@promotionalrules = promotionalrules
end
....Other code
for rule in @promotionalrules.getrules
for item in @items
##Execute rule on current item.
end
end
我对我的代码不太满意...循环与循环等。但我只是在寻找一些关于封装的帮助,因为我不确定我哪里出错了。
任何关于适用于简报的良好设计模式的建议也将是有益的,因为我对我采用的方法不太自信。谢谢
【问题讨论】:
标签: ruby oop design-patterns encapsulation