【发布时间】:2010-04-15 15:11:53
【问题描述】:
编程很有趣:我通过尝试简单的挑战、阅读一些书籍和遵循一些教程了解到这一点。我能够掌握使用 OO 编写的概念(我在 Ruby 中这样做),并自己编写了一些代码。但让我烦恼的是,我觉得我在重新发明轮子:我没有接受过教育或找到一本书(一本免费的)来解释我为什么而不是如何,我已经学会了来自 A 团队的人认为,正是计划使它走到了一起。因此,凭借我的 nuby Ruby 技能,我决定编写一个虚拟商店。我想出了以下几点:
我的虚拟商店将拥有:
- 产品和服务
- 库存
- 订单和发货
- 客户
现在这一点都不复杂。在一些很酷的工具(CMapTools)的帮助下,我画出了一些概念,但很快(由于我在设计方面的经验不足),我的设计开始咬我。我的第一个产品线是虚拟“笔记本电脑”。所以,我创建了一个类(Ruby):
class Product
attr_accessor :name, :price
def initialize(name, price)
@name = name
@price = price
end
end
可以通过执行 (IRb) 来实例化
x = Product.new("Banana Pro", 250)
因为我希望我的虚拟客户能够购买不止一种产品或各种配置,所以我发现我需要某种“订单”机制。
class Order
def initialize(order_no)
@order_no = order_no
@line_items = []
end
def add_product(myproduct)
@line_items << myproduct
end
def show_order()
puts @order_no
@line_items.each do |x|
puts x.name.to_s + "\t" + x.price.to_s
end
end
end
可以通过执行 (IRb) 来实例化
z = Order.new(1234)
z.add_product(x)
z.show_order
太好了,我现在有一个非常简单的订购系统,允许我将产品添加到订单中。但是,我真正的问题来了。
如果我的产品有三种型号(经济型、商业型、炫耀型)怎么办?还是我的产品由不同的单元组成(更大的屏幕、更好的键盘、不同的操作系统)?当然,我可以将它们制成三个独立的产品,或者为我的产品类别增加复杂性,但我正在寻找设计可在现实世界中使用的灵活产品对象的最佳实践,以促进复杂的系统。
如果我的语法和拼写有错误,我深表歉意,因为英语不是我的母语,我花时间检查我能理解和正确翻译的程度!
感谢您的回答、cmets 和反馈!
【问题讨论】: