- , " ". , . , ,
public void evaluateDigestion(AbstractStomach stomach) {
}
Stomach, a FruitStomach MeatStomach DessertStomach . evaluateDigestion stomach.consume(someKindOfFood). consume, ( evaluateDigestion , ), consume, Food. consume "" consume(Food food), . consume Food. Apple, Orange ..; Java . ( , , " ", , , .)
,
public void consume(Food food)
.
public void consume(Food food) {
if (food instanceof Apple) {
consume((Apple)food);
} else if (food instanceof Orange) {
consume((Orange)food);
} else {
throw ...
}
}
Food, , Food :
public abstract class Food {
public void abstract consumedBy(AbstractStomach stomach);
}
Apple Orange .., consume
public static void consume(Food food) {
food.consumedBy(this);
}
FruitStomach . , instanceof, , . ( : Fruit, Food, Apple Orange Fruit, food instanceof Fruit, , . .)