Образец 1
@Component(policy = ConfigurationPolicy.OPTIONAL, immediate = false)
public class ServiceImpl implement Service {
@Override
public void foo() {
}
...
}
Образец 2
@Component(policy = ConfigurationPolicy.OPTIONAL, immediate = false)
public class Service {
public void foo() {
}
...
}
У меня есть компонент, который состоит из нескольких методов. Я хочу предоставить класс ServiceImpl, который реализует интерфейс службы в качестве службы OSGi (в примере 1). Однако интерфейс сервиса реализован одним классом. Согласно принципу дизайна YAGNI, создание интерфейса только для одного класса не требуется. Вместо этого предпочтительнее создать класс, у которого есть методы (в примере 2). Если я выберу первый пример, я буду игнорировать некоторые соглашения, включая YAGNI и именование классов (не суффикс impl, а спецификация c name). Если я выберу образец 2, он не подходит для среды OSGi. Я не совсем понимаю, что мне делать.