# Null Object Pattern

> A design pattern that represents absence with an object implementing the expected interface as a no-op.

Record: `architecture:null-object-pattern`
Kind: pattern
Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)
Severity: contextual
Scope: behavior, absence, default
Canonical: https://banes-lab.com/ontology#architecture-null-object-pattern

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Memento Pattern](https://banes-lab.com/records/architecture/memento-pattern.md) and before [Finite State Machine](https://banes-lab.com/records/architecture/finite-state-machine.md).

## Repair

- Refactored by: Introduce Null Object
- Detected by: repeated null checks before the same operation
- Violated by: null-guards scattered across every call site
- Measured by: null-guard density
- Enforced by: [design review](https://banes-lab.com/records/architecture/design-review.md)

## Requires

- [Shared Behavioral Interface](https://banes-lab.com/records/lexicon/shared-behavioral-interface.md)

## Reinforces

- [Polymorphism](https://banes-lab.com/records/architecture/polymorphism.md)
- [Fail-Safe Defaults](https://banes-lab.com/records/lexicon/fail-safe-defaults.md)

## Enables

- [Null-Check Elimination](https://banes-lab.com/records/lexicon/null-check-elimination.md)

## Conflicts with

- [Null Semantics Drift](https://banes-lab.com/records/architecture/null-semantics-drift.md)

## In tension with

- [Silent No-Op Risk](https://banes-lab.com/records/lexicon/silent-no-op-risk.md)

## Tensions

- [Null Object Pattern / Silent No-Op Risk](https://banes-lab.com/records/tension/null-object-pattern-silent-no-op-risk.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Behavioral Patterns](https://banes-lab.com/records/architecture-category/behavioral-patterns.md)

## Linked from

- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [SOLID / Object-Oriented Design](https://banes-lab.com/ontology/principles/architecture-category-solid-object-oriented-design.md)
- [Behavioral Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-behavioral-patterns.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
