java - Should the interface define implementation specific enum values? -
consider following organization of classes:
interface restaurant { public void dine(object dish); } class italianrestaurant implements restaurant { public void dine(object dish) { // eat spoon , forks } } class chineserestaurant implements restaurant { public void dine(object dish) { // eat chopsticks } }
since both restaurants serve different sets of dishes, correct way (design-wise) represent type
of dish
in interface?
will design decision define enum listing dishes -- italian , chinese -- part of interface, , use enum type
dish
?
you've used object
type dish. meaning can considered dish here.
does mean can serve phone
or pen
dish? no; dish dish. why not create abstraction dish well?
better design :
interface restaurant { void dine(dish dish); }
dish
interface or abstract class; choose 1 more appropriate. every kind of dish served go separate class inherits/implements dish
.
Comments
Post a Comment