# Null Object Pattern

Record: `arch: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#arch-null-object-pattern

## 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/arch/design-review.md)

## requires

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

## reinforces

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

## enables

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

## conflicts-with

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

## tensions-with

- [Silent No-Op Risk](https://banes-lab.com/records/lex/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)
