我需要设计一个自动售货机,以分配各种饮料,例如茶和咖啡。

我几乎完成了设计,但是有一个我无法做出的决定。

关于饮料课。

我是否应该创建具有特定属性的具体Drink类,并为每种饮料创建一个新实例并相应地设置属性。

例:-

Drink tea = new Drink();
Drink coffee = new Drink();


或另一种方法可以是我制作一个抽象的Drink类。

abstract class Drink{ }


像茶和咖啡

class Tea extends Drink{ }
class Coffee extends Drink { }


两种方法的优缺点是什么?

最佳答案

这要视情况而定,其中一种方法并不总是比另一种方法更好。

每种饮料都有子类的优点是,您可以在适当的子类中实现特定于饮料类型的功能,而不必将所有饮料的所有功能都放在Drink类中。但是,这是否与您的应用程序有关取决于Drink的确切角色,以及您是否需要特定于饮料类型的功能。

如果类Drink只是一个简单的数据容器类,例如,它为饮料名称等保留了几个字段,并且您不需要针对各种饮料的特定逻辑,那么第一个解决方案会更简单,您只需一个类Drink

10-08 18:18