In the tutorial I'm doing it uses interfaces to inject things, for example it uses a IHotDrink interface, then creates a Tea class that implements IHotDrink. It then has a third class called Restaurant that has a IHotDrink field inside the class and assigns a value to it in the constructor. It then goes on by injecting a Tea Class into the Restaurant class's constructor (which takes a IHotDrink interface argument)
So basically my question is: Does every field that is going to be injected need to be an interface?
Lets say I have a bunch of food items that all implement a IHotFoods interface, and a bunch of drinks that all implement the IHotDrink Interface, would it be okay If I have a meal class that doesn't implement anything and takes in a IHotFood interface and a IHotDrink Interface as arguments into its constructor (that will later be injected by different food/drinks classes ) and then have a meal field in the restaurant class that I can inject with different meal objects? Would this be okay? Or would I have to: Make a meals interface, have meal implement meals, and have Restaurant have a meals interface field that I can inject meal into?
Edit: I'm not asking whether every class should implement an interface, I'm asking whether they should always have interface fields to inject other classes into them that also implement the interface. (like in the example in the tutorial)
Restaurant
to have aMenu
, which would act as a catalog ofMeal
s, e.g. with prices and availability, and maybe provide query by food, drink, and combos.