所以我目前有一个接口Rentable
,旨在由任何需要,可以出租的对象实现,它有三种方法:
boolean isRented();
void rent();
void terminateRental();
事实上,在实现此接口的类中,租用和终止实现对象的租用的能力应该是包私有的,但显然我在第一次编写类结构时没有意识到这一点。
一个单独的租赁管理器类提供公共方法来租用Rentable
并将其与代表租用它的个人的另一个对象相关联,而这个类是唯一应该真正调用{{1}的类。 rent
对象本身的{}和terminateRental
个方法。很明显,如果其他类可以公开操纵对象的租用状态而不将其与租用它的人分开,则这是一个问题。
所以这个接口的最后两个方法实际上应该是package-private,所以很明显它们需要从接口出来,但接着是接口:
Rentable
......真的是一个好主意或好的做法?我已经查找了单方法接口,当它们是一个好主意或不是,但找不到与这种情况有关的很多东西。对我来说似乎有点不对,虽然我认为它需要一个对象具有租用状态,这意味着需要编写改变它的方法,并且支持其他对象变为public interface Rentable {
boolean isRented();
}
对我来说可能是件好事。未来(目前只是汽车,但可能会出租其他类型的车辆或服务)。但我只是不确定这是多么好的做法,或者在这种情况下是否有某种替代方案我没有看到?
答案 0 :(得分:2)
单方法接口没有任何本质上的错误(标准库包含一些,但可能相关或不相关)。如果你需要实现保证给客户的唯一事情就是能否沟通他们是否被租用,那么你建议的界面就可以了。
另请注意,接口不仅仅是其方法:接口是 bona fide 类型。如果您没有以这种方式使用此接口 - 作为变量,方法参数和/或返回类型的声明类型或类型参数 - 那么您实际上并没有从中获得太多。