A grouping of cohesive classes or functions, with an interface that hides the implementation.
Module architecture diagram

How does it work?

Each module has a very specific function. All functionality that has cyclical dependencies should be grouped into a single module. A module is small, typically a single fine. One module may access another module through its interface, and can not access its implementation.

When should you use it?

This is a common way to split a large code base into manageable parts.

Common implementation techniques

  • Each module has its own file or directory