Есть много других вещей, которые вы можете сделать с безопасностью, не думаете ли вы, что вы можете получить экземпляр FooService
в LegacyPojo
, передав его конструктору, он будет менее связанным.
Другая вещь, которую вы можете сделать, это управлять экземплярами FooService
, вы можете сделать это как одиночный, объявив его как статическое свойство в ServiceHolder и не иметь setMethod
.Я думаю, как вы сказали, вы хотите один экземпляр FooService
.
Даже если LegacyPojo Pojo
, вам не нужно создавать геттер для FooService
.
После использования ServiceHolder.setFooService(service);
вы можете сделать реализацию, подобную этой:
class ServiceHolder{
private static FooService fooService;
public static void setFooService(FooService newFooService){
if(fooService== null){
fooService = newFooService;
}
}
}
Таким образом, вы установите только первый экземпляр FOoService
, и он не будет изменен, конечно, вы можете выполнить любое условие для setFooService в ServiceHolder