Layer (object-oriented design)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In object-oriented design, a layer is a group of classes that have the same set of link-time module dependencies to other modules.[1] 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.

Layers are often arranged in a tree-form hierarchy, with dependency relationships as links between the layers. Dependency relationships between layers are often either inheritance,[2] composition or aggregation relationships, but other kinds of dependencies can also be used.

Layers is an architectural pattern described in many books, for example Pattern-Oriented Software Architecture[3]

See also[edit]


  1. ^ Lakos, John (1997). Large-scale C++ software design'. Addison-Wesley.
  2. ^ Monperrus, Martin; Beugnard, Antoine; Champeau, Joël. "A Definition of "Abstraction Level" for Metamodels". 2009 16th Annual IEEE International Conference and Workshop on the Engineering of Computer Based Systems. doi:10.1109/ecbs.2009.41.
  3. ^ Pattern-Oriented Software Architecture - A System of Patterns Archived 2008-06-16 at the Wayback Machine