SFMF4J's architecture was inspired by the widely popular logging library SLF4J (and its name was chosen as a tribute). This design does a good job of separating APIs from their implementations. It allows library developers to focus on what actions should be taken when a file system event has occurred, and defers the responsibility of choosing an implementation to the application developer.
A FileMonitorServiceFactory is responsible for creating and configuring FileMonitorService instances. It is provided by the SFMF4J implementation library.