接口应该定义特定于实现的枚举值吗?

Jit*_*esh 7 c# java oop interface

考虑以下类的组织:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

由于两个餐厅提供完全不同的套菜,这将是(设计方面)来表示的正确方法typedish在界面?

这将是一个很好的设计决策定义枚举列出所有的菜-意大利和中国-作为接口的一部分,并用它作为枚举typedish

Sri*_*vel 4

您已经使用了ObjectDish 的类型。这意味着这里任何东西都可以被视为一道菜。

这是否意味着您可以提供一道菜PhonePen作为一道菜?不; 一道菜就是一道菜。为什么不为 Dish 也创建一个抽象呢?

更好的设计是:

interface Restaurant 
{
    void dine(Dish dish);
}
Run Code Online (Sandbox Code Playgroud)

Dish可以是接口或抽象类;选择一个更合适的。然后,每一种菜肴都将作为一个单独的类继承/实现Dish