考虑以下类组织:
interface Restaurant
{
public void dine(Object dish);
}
class ItalianRestaurant implements Restaurant
{
public void dine(Object dish)
{
// eat with spoon and forks
}
}
class ChineseRestaurant implements Restaurant
{
public void dine(Object dish)
{
// eat with chopsticks
}
}
由于两家餐厅提供完全不同的菜肴,在界面中表示 dish
的 type
的正确方式(设计方面)是什么?
定义一个列出所有意大利菜和中国菜的枚举作为界面的一部分,并将该枚举用作 dish 的
?type
是否是一个好的设计决策
最佳答案
您已经为菜肴使用了 Object
类型。意思是任何东西在这里都可以被视为一道菜。
这是否意味着您可以将 Phone
或 Pen
用作盘子?不;一道菜就是一道菜。为什么不为 Dish 也创建一个抽象?
更好的设计应该是:
interface Restaurant
{
void dine(Dish dish);
}
Dish
可以是接口(interface)或抽象类;选择一个更合适的。然后每一种菜肴都将作为一个单独的类继承/实现 Dish
。
关于java - 接口(interface)是否应该定义特定于实现的枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34661530/