【发布时间】:2020-02-27 12:07:51
【问题描述】:
示例 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 类,它将 Service 接口实现为 OSGi 服务(在示例 1 中)。但是,Service 接口是由单个类实现的。根据 YAGNI 设计原则,不需要为一个类创建接口。与其这样做,不如创建具有方法的类(在示例 2 中)。如果我选择示例一,我将忽略一些约定,包括 YAGNI 和类命名(不是 impl 后缀,而是特定名称)。如果我选择示例 2,它将不适合 OSGi 环境。我很困惑我该怎么做。
【问题讨论】:
标签: java design-patterns dependency-injection osgi inversion-of-control