Если существует вероятность того, что класс реализует IA
и IB
, и этот факт концептуально имеет смысл для проблемной области, в которой вы работаете, просто имейте IAB
какthis
interface IAB extends IA, IB { /* nothing */ }
Определите , если это имеет смысл в вашем случае, может быть так же просто, как спросить себя , что будет хорошим именем для IAB? Если вы можетепридумать удовлетворительный ответ на это, вы можете просто добавить этот интерфейс.Если не , тогда правильное место для ваших двух
thisClassImGonnaUse.doSomething();
thisClassImGonnaUse.doSomethingToo();
линий будет метод FooA
или FooB
(или базовый класс этих двух).Таким образом, вам не нужно делать заблуждения или предположения о природе классов, реализующих ваши интерфейсы (которые могут стать недействительными или затруднительными для обработки позже).