Separated Interface Pattern
Motivation
Defines an interface in a separate package from its implementation.
Summary
Define an interface in one package but implement it in another.
This way a client that needs the dependency to the interface can be completely unaware of the implementation.
The Separated Interface provides a good plug point for Gateway.
Interface implementation can be provided either at compile time or at Runtime using Plugin.
This is mainly a base pattern for packing of implementation and interface binaries.
References