我正在编写一个计算冰淇淋成本的简单程序。
这个过程很简单:挑一个蛋筒,挑一些口味,挑一些浇头,然后付钱。
有一堆不同的蛋筒,一堆不同的口味,还有一堆不同的配料。
我的设计是使用装饰器类来包装冰淇淋,类似于下订单的方式。
所以我有我的基本 Ice Cream 类,它提供了一个“数量”属性,指示事物的成本,以及 Cone、Flavor 和 Toppings 的装饰器类。每个班级都会拿一个冰淇淋对象并添加到数量,因此您基本上可以混合搭配不同类型的冰淇淋。
我有另一个处理实际货币交易的类,它接受各种对象并计算价格。特别是,如果它看到一个冰淇淋,它将执行一些与冰淇淋相关的过程。
现在,这个设计听起来不错,但是我如何检查从冰淇淋机中出来的物体是否是冰淇淋类型的呢?毕竟,理论上它会被一堆装饰器包裹起来,所以如果你问它的类,你可能会看到像 Topping 这样的东西,而不仅仅是冰淇淋。冰淇淋也不需要超级类;它可能是层次结构中的几个类。
<topping ice cream>.Instanceof(Ice_Cream)
似乎不起作用。
此外,我已经使用一组类实现了它。我可以使用 ruby 中的其他方法来实现这种类型的设计吗?