Это не похоже на анти-паттерн. Вы описали это на том уровне абстракции, что я могу предположить только то, что Baz
имеет смысл только с некоторыми реализациями IFoo
и IBar
интерфейсов. В этом случае вам нужно реализовать дополнительный класс, который защищает систему от «плохих» Baz
объектов. Вы можете использовать Builder или другой Шаблон создания для создания только допустимых Baz
объектов.
С Builder
это может выглядеть так:
Baz validBaz = new BazBuilder().withFoo(foo).withBar(bar).build();
Вы можете проверять экземпляры в методе или создавать набор методов с разрешенными типами:
public BazBuilder withBar(Bar1 bar) { ... }
и
public BazBuilder withBar(Bar2 bar) { ... }
Таким образом, пользователь может предоставить только Bar1
иBar2
экземпляров. Bar3
не допускается. Конечно, в этом сценарии класс Baz
не может быть создан другим способом.