考虑班级安排如下:接口是否应该定义实现特定的枚举值?
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
?
将Enum作为界面的一部分列出所有菜肴(意大利语和中文),将Enum作为type
作为dish
是否是一个好的设计决定?
为什么不是界面或抽象类'Dish'? – CollinD
它不应该是一个枚举。如果一家泰式餐厅目前供应绿咖喱和红咖喱,然后想添加黄咖喱作为新菜,你真的希望餐厅联系开发商要求将黄咖喱添加到枚举中吗?没有!餐厅应该能够定义新菜,而不需要更改代码。 – Andreas