# Structural Patterns

> Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or…

Page: Ontology · Lexicon
Canonical: https://banes-lab.com/ontology/lexicon#lexicon-category-structural-patterns

Listed in [Ontology · Lexicon](https://banes-lab.com/api/pages/ontology/lexicon.md), after [Streaming / Pipeline / Dataflow Processing](https://banes-lab.com/ontology/lexicon/lexicon-category-streaming-pipeline-dataflow-processing.md) and before [Taxonomy / Classification / Naming](https://banes-lab.com/ontology/lexicon/lexicon-category-taxonomy-classification-naming.md).

Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or contract that carries the same name where one exists, and the layer its category belongs to. A tag category also gives each term an example, which is the file the tag places or the rename from a refused word onto a covering tag.

### Cartesian Inheritance Explosion

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Modeling every combination of two independent dimensions as its own subclass, so the class count grows multiplicatively.

Referenced by
[Bridge Pattern](https://banes-lab.com/records/architecture/bridge-pattern.md)

How it is checked

Checked by
[Bridge Pattern](https://banes-lab.com/records/architecture/bridge-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Common Interface

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The requirement that a wrapper and the object it wraps share one interface so they remain interchangeable.

Referenced by
[Decorator Pattern](https://banes-lab.com/records/architecture/decorator-pattern.md)

How it is checked

Checked by
[Decorator Pattern](https://banes-lab.com/records/architecture/decorator-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Direct Access

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Reaching a resource directly with no intermediary, bypassing the access control, caching, or laziness a proxy would add.

Referenced by
[Proxy Pattern](https://banes-lab.com/records/architecture/proxy-pattern.md)

How it is checked

Checked by
[Proxy Pattern](https://banes-lab.com/records/architecture/proxy-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Direct External Coupling

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Coupling code directly to an incompatible external interface, spreading its idiosyncrasies through the codebase.

Referenced by
[Adapter Pattern](https://banes-lab.com/records/architecture/adapter-pattern.md)

How it is checked

Checked by
[Adapter Pattern](https://banes-lab.com/records/architecture/adapter-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### High-Cardinality Object Reuse

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to represent large numbers of similar objects economically by sharing their common intrinsic state.

Referenced by
[Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)

How it is checked

Checked by
[Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Implementation Swap

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to change an abstraction's underlying implementation without altering the abstraction itself.

Referenced by
[Bridge Pattern](https://banes-lab.com/records/architecture/bridge-pattern.md)

How it is checked

Checked by
[Bridge Pattern](https://banes-lab.com/records/architecture/bridge-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Incompatible Interfaces

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
A precondition of two interfaces that must cooperate yet expose mismatched signatures.

Referenced by
[Adapter Pattern](https://banes-lab.com/records/architecture/adapter-pattern.md)

How it is checked

Checked by
[Adapter Pattern](https://banes-lab.com/records/architecture/adapter-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Independent Variation Axes

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The requirement that an abstraction and its implementation vary along separate axes so they can be decoupled.

Referenced by
[Bridge Pattern](https://banes-lab.com/records/architecture/bridge-pattern.md)

How it is checked

Checked by
[Bridge Pattern](https://banes-lab.com/records/architecture/bridge-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Indirection

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The degree of extra indirection introduced by separating an abstraction from its implementation.

Referenced by
[Bridge Pattern](https://banes-lab.com/records/architecture/bridge-pattern.md)

How it is checked

Checked by
the tension resolution with bridge-pattern

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Lazy Load

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to defer creating or loading a costly resource until it is first used.

Referenced by
[Proxy Pattern](https://banes-lab.com/records/architecture/proxy-pattern.md)

How it is checked

Checked by
[Proxy Pattern](https://banes-lab.com/records/architecture/proxy-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Leaf-vs-Container Special-Casing

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Branching client code on whether an element is a leaf or a container instead of treating them through one interface.

Referenced by
[Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)

How it is checked

Checked by
[Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Leaf/Composite Transparency

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to treat individual objects and compositions of objects through one uniform interface.

Referenced by
[Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)

How it is checked

Checked by
[Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Leaky Subsystem API

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Exposing a subsystem's internal complexity directly to clients instead of hiding it behind a simplifying interface.

Referenced by
[Facade Pattern](https://banes-lab.com/records/architecture/facade-pattern.md)

How it is checked

Checked by
[Facade Pattern](https://banes-lab.com/records/architecture/facade-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Over-Centralization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The degree to which routing all access through one facade concentrates responsibility and can bottleneck change.

Referenced by
[Facade Pattern](https://banes-lab.com/records/architecture/facade-pattern.md)

How it is checked

Checked by
the tension resolution with facade-pattern

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Per-Instance Duplicate State

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Storing identical shared state separately in every object instance, wasting memory at high object counts.

Referenced by
[Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)

How it is checked

Checked by
[Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Recursive Composition

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to build tree structures in which composites contain other composites to arbitrary depth.

Referenced by
[Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)

Distinct from
[Leaf/Composite Transparency](https://banes-lab.com/records/lexicon/leaf-composite-transparency.md): Recursive composition nests composites to any depth, while leaf and composite transparency lets callers treat both through one interface.

How it is checked

Checked by
[Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Remote Stub

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
A local stand-in object that forwards calls to an object living in another process or machine.

Referenced by
[Proxy Pattern](https://banes-lab.com/records/architecture/proxy-pattern.md)

How it is checked

Checked by
[Proxy Pattern](https://banes-lab.com/records/architecture/proxy-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Runtime Behavior Extension

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to add responsibilities to an object dynamically at runtime by wrapping it.

Referenced by
[Decorator Pattern](https://banes-lab.com/records/architecture/decorator-pattern.md)

How it is checked

Checked by
[Decorator Pattern](https://banes-lab.com/records/architecture/decorator-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Separable Intrinsic State

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The requirement that an object's shared, context-independent state be separable from its per-use state.

Referenced by
[Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)

How it is checked

Checked by
[Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Shared Immutable State

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to safely share one immutable state object across many contexts at once.

Referenced by
[Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)

Distinct from
[High-Cardinality Object Reuse](https://banes-lab.com/records/lexicon/high-cardinality-object-reuse.md): Shared immutable state is one object safely used in many contexts, while high-cardinality reuse represents many similar objects cheaply through that sharing.

How it is checked

Checked by
[Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Simplified Access

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The ability to use a complex subsystem through a small, convenient interface.

Referenced by
[Facade Pattern](https://banes-lab.com/records/architecture/facade-pattern.md)

How it is checked

Checked by
[Facade Pattern](https://banes-lab.com/records/architecture/facade-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Stack Debugging

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The degree to which layers of wrapping deepen the call stack and complicate debugging.

Referenced by
[Decorator Pattern](https://banes-lab.com/records/architecture/decorator-pattern.md)

How it is checked

Checked by
the tension resolution with decorator-pattern

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Subclass Explosion

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
Creating a distinct subclass for every combination of optional features instead of composing them at runtime.

Referenced by
[Decorator Pattern](https://banes-lab.com/records/architecture/decorator-pattern.md)

How it is checked

Checked by
[Decorator Pattern](https://banes-lab.com/records/architecture/decorator-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Subsystem Complexity

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The degree of internal complexity in a subsystem that motivates hiding it behind a facade.

Referenced by
[Facade Pattern](https://banes-lab.com/records/architecture/facade-pattern.md)

How it is checked

Checked by
[Facade Pattern](https://banes-lab.com/records/architecture/facade-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Transparency / Debugging

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The degree to which interposing a proxy hides the real object and complicates tracing calls to it.

Referenced by
[Proxy Pattern](https://banes-lab.com/records/architecture/proxy-pattern.md)

How it is checked

Checked by
the tension resolution with proxy-pattern

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Uniform Component Interface

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Structural Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-structural-patterns.md)
- Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)

Details

Definition
The requirement that leaves and composites implement one shared interface so clients treat them alike.

Referenced by
[Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)

How it is checked

Checked by
[Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

## Links to

- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)
- [Bridge Pattern](https://banes-lab.com/records/architecture/bridge-pattern.md)
- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Decorator Pattern](https://banes-lab.com/records/architecture/decorator-pattern.md)
- [Proxy Pattern](https://banes-lab.com/records/architecture/proxy-pattern.md)
- [Adapter Pattern](https://banes-lab.com/records/architecture/adapter-pattern.md)
- [capability](https://banes-lab.com/records/kind/capability.md)
- [Flyweight Pattern](https://banes-lab.com/records/architecture/flyweight-pattern.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Composite Pattern](https://banes-lab.com/records/architecture/composite-pattern.md)
- [Facade Pattern](https://banes-lab.com/records/architecture/facade-pattern.md)
- [Leaf/Composite Transparency](https://banes-lab.com/records/lexicon/leaf-composite-transparency.md)
- [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- [High-Cardinality Object Reuse](https://banes-lab.com/records/lexicon/high-cardinality-object-reuse.md)
