CommerceAccelerator.Application.B2CStore is the reference implementation for a Commerce Accelerator Store. The B2CStore module design is illustrated below.

In this illustration:
The modules
BaseandPlugins.*are the Commerce Store Accelerator core modules and collectively implement the Commerce Store Accelerator framework.Application.B2CStoreis a realization of the Store module and as such composes features implemented in the Plugins and serves as the entry point to the application.Basedefines the “pluggable” interfaces forPlugins.*.Baseis an extension of theDCSandRESTmodules.Application.B2CStore.Basedefines the “pluggable” interfaces forApplication.B2CStore.Plugins.*.Application.B2CStore.Baseis an extension ofBaseand can overrideBaseimplementations or extend theBaseinterface.Plugins.*provide features by implementing interfaces fromBase.Application.B2CStore.Plugins.*are extensions of thePlugins.*modules, and can overridePlugins.*implementations or realize new interfaces from Application.B2CStore.Base. Note that where no correspondingB2CStore.Plugins.*extension exists the framework module is referenced directly.If a module uses an interface that is implemented in a different module there will be a dependency, for example,
Plugins.Checkouthas dependencies onPlugins.AccountandPlugins.Promotions. This can be implemented as an explicit dependency defined in theMETA-INF, or an implicit dependency defined in the startup script; an implicit dependency is recommended as it makes the architecture more flexible. Circular dependencies are not supported.

