在教程中,我正在使用接口来注入内容,例如它使用IHotDrink接口,然后创建一个实现IHotDrink的Tea类。然后它有一个名为Restaurant的第三个类,它在类中有一个IHotDrink字段,并在构造函数中初始化它。然后通过将Tea Class注入到Restaurant类的构造函数(它采用IHotDrink接口参数)来继续
所以基本上我的问题是:每个要注入的字段都需要是一个接口吗?
假设我有一堆食品都实现了IHotFoods界面,还有一堆饮料都实现了IHotDrink界面,如果我有一个没有实现任何东西的餐饮类并且需要一个IHotFood界面和IHotDrink接口作为其构造函数的参数(稍后将由不同的食品/饮料类注入),然后在餐厅类中有一个用餐区,我可以注入不同的餐食对象?这样可以吗?或者我是否必须:做一个用餐界面,吃饭实施餐,并让餐厅有一个餐饮接口领域,我可以注入餐?
我不是在问每个类是否应该实现一个接口,我问他们是否应该总是有接口字段来注入其他类,同时实现接口。 (如教程中的示例)
不,没有必要总是有接口字段将其他类注入其中也实现接口。接口只是帮助您注入实现相同接口的不同字段。
使用Restaurant类中的IHotDrink接口字段,您可以灵活地使用实现IHotDrink的Tea以及实现IHotDrink的Coffee。
关于你的“膳食”例子,因为你已经在Meal课程中使用了IHotDrink和IHotFood,你可以在Meal课程中享用任何热饮和热食,因此你不需要创建一个Meals界面并且可以用餐。
我不是在问每个类是否应该实现一个接口,我问他们是否应该总是有接口字段来注入其他类,同时实现接口。
你可以尝试,你会发现你不需要指定一个接口来允许一个类成为一个可注入的bean。 通常在两种情况下定义接口是有意义的:
org.springframework.data.jpa.repository.JpaRepository
的情况)。