[rules-users] api's, factories and services

Mark Proctor mproctor at codehaus.org
Thu Mar 1 06:15:56 EST 2012


Just a reminder when doing api's

Stage interfaces in internal-api and make sure you do factories for 
them, almost never expose "new" constructors to users. We provide both 
static factories and a service registry, and we ideally should continue 
to support both. i.e. we have
KnowledgeBuilderFactory (static method factory, actually wraps below)
KnowledgeBuilderFactoryService (singleton service)

static example:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder()

singleton service  exmaple:
KnowledgeBuilderFactoryService kbuilderfs = 
ServiceRegistry.getInstance().get( KnowledgeBuilderFactoryService.class )
KnowledgeBuilder kbuilder = kbuilderfs .newKnowledgeBuilder()

All of our factory services should be registered in 
org.drools.util.ServiceRegistryImpl, this has delegation to say OSGi if 
it exists (via the service locator pattern). So we become much more 
friendly to OSGi or other container environments that are service 
locator oriented.

"new" should almost never be used, apart from when construcing say 
default or debug listener implementations.


Mark




More information about the rules-users mailing list