繁体   English   中英

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

[英]Should the interface define implementation specific enum values?

考虑以下类的组织:

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作为dish type ,这是一个很好的设计决定吗?

你已经使用了Object类型的Dish。 意思是任何东西都可以被认为是这里的菜。

这是否意味着您可以将PhonePen作为菜肴? 没有; 菜是一道菜。 为什么不为Dish创建一个抽象?

更好的设计是:

interface Restaurant 
{
    void dine(Dish dish);
}

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

我认为最正确的方法是定义一个通用接口

interface Restaurant<T> {

    public void dine(T dish);

}

编辑:好吧,我在思考c#....不知道它是否适合

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM