我的要求: 我有一项服务可以处理我的项目的持久性。让我将此服务称为 PersistenceProvider 服务,并假设它位于“my.persistenceservice”包中。
现在,我有另一个名为“my.persitenceconsumer”的包,它使用名为 MyPersistenseConsumer 的类之一的 bind() unbind() 方法引用 PersistenceProvider 服务。因此,当“my.persistenceconsumer”捆绑启动时,它将使用 bind() 方法获取 PersistenceProvider 服务的引用,并且 MyPersistenceConsumer 可以使用 PersistenceProvider 服务
但是,我还需要从“my.persitenceconsumer”包中的不同类中使用这个 PersistenceProvider 服务。
我的问题是: 在不同的类中使用这种共享服务的最佳方式是什么(在同一个包中)
解决方案之一: 我可以在“my.persitenceconsumer”包中添加 Activator 类 .. 具有静态 getInstance() 方法。可以由 MyPersistenceConsumer.bind() 调用并将 PersistenceProvider 与 Activator 一起存储。后面“my.persitenceconsumer”包中的所有类都可以通过 Activator 类使用 PersistenceProvider。
这是代码:
public class MyPersistenceConsumer {
public void bindPersistenceProvider(PersistenceProvider ppRef) {
MyPersistenceConsumerActivator.getInstance().bindPersistenceProvider(ppRef);
}
}
public class MyPersistenceConsumerActivator {
static MyPersistenceConsumerActivator instance;
PersistenceProvider ppRef;
public static getInstance() {
return instance;
}
public void bindPersistenceProvider(PersistenceProvider ppRef) {
this.ppRef = ppRef;
}
public PersistenceProvider getPersistenceProvider() {
return ppRef;
}
public void start(BundleContext context) throws Exception {
instance = this;
}
}
public class MyClass1 {
public void usePersistenceProvider(){
PersistenceProvider pp Ref =
MyPersistenceConsumerActivator.getInstance().getPersistenceProvider();
}
}
public class MyClass2 {
public void usePersistenceProvider(){
PersistenceProvider pp Ref =
MyPersistenceConsumerActivator.getInstance().getPersistenceProvider();
}
}
最后: 以上是好方法..还是有更好的方法?