Represents an operation as an object.

Model where systems communicate as peers without a central server.

Variable or method belonging to a class or object.

Components should be extendable without unnecessary modification.

Changes behavior based on an object's state.

Architecture separating presentation, application, and data layers.

Keyword controlling accessibility of program elements.

Subtypes should be usable wherever their base types are expected.

Defines an algorithm structure with customizable steps.

Architecture divided into multiple logical or physical tiers.