In
object-oriented design, a
layer is a group of
classes that have the same set of link-time
module dependencies to other modules. In other words, a layer is a group of reusable
components that are
reusable in similar circumstances. In programming languages, the layer distinction is often expressed as "import" dependencies between software modules.