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)
由于两个餐厅提供完全不同的套菜,这将是(设计方面)来表示的正确方法type的dish在界面?
这将是一个很好的设计决策定义枚举列出所有的菜-意大利和中国-作为接口的一部分,并用它作为枚举type的dish?
您已经使用了ObjectDish 的类型。这意味着这里任何东西都可以被视为一道菜。
这是否意味着您可以提供一道菜Phone或Pen作为一道菜?不; 一道菜就是一道菜。为什么不为 Dish 也创建一个抽象呢?
更好的设计是:
interface Restaurant
{
void dine(Dish dish);
}
Run Code Online (Sandbox Code Playgroud)
Dish可以是接口或抽象类;选择一个更合适的。然后,每一种菜肴都将作为一个单独的类继承/实现Dish。