как продолжение моего предыдущего вопроса
Наличие функции с комбинированными общими границами, такими как:
<T extends Foo & Bar> void doStuff(T argument) {
//do stuff wich should only be done if arguments is both foo and bar
}
Поскольку он не может быть преобразован из неопределенного объекта, вам необходимо знать некоторый объект, который фактически реализует эти интерфейсы. мне кажется, что необходимость знать конкретный тип аргумента объекта для передачи на doStuff(T a)
является нарушением закона Деметера.
Функция не определяет необходимость знать фактический класс (может быть много разных), и я действительно не хочу знать это, так как знание этого класса увеличивает зависимость в моей кодовой базе.
использует эти границы анти-паттерн? и если да, то как лучше избегать этого?
сценарий случая включал один интерфейс, указывающий, что объект является постоянным, а другой указанный объект имеет связанную сущность. функция doStuff(T a)
в этом случае сохраняла связанный объект, когда она сохранялась. однако непостоянные сущности также могут иметь связанную сущность, но не должны обрабатываться функцией doStuff(T a)