# Open/Closed Principle

Record: `arch:open-closed`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: recommended
Scope: class, module, component
Aliases: OCP
Canonical: https://banes-lab.com/ontology#arch-open-closed

## Repair

- Refactored by: Extract Strategy, Add Extension Point, Introduce Plugin
- Detected by: growing conditionals, repeated edits to central classes
- Violated by: repeated modification of stable core for variants
- Measured by: modification frequency of core modules
- Enforced by: extension policies, change analysis

## requires

- [Abstraction](https://banes-lab.com/records/arch/abstraction.md)
- [Extension Points](https://banes-lab.com/records/arch/extension-points.md)

## reinforces

- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)
- [Strategy Pattern](https://banes-lab.com/records/arch/strategy-pattern.md)

## enables

- [Feature Extension without Modification](https://banes-lab.com/records/lex/feature-extension-without-modification.md)

## conflicts-with

- [Switch-Based Extension](https://banes-lab.com/records/lex/switch-based-extension.md)

## tensions-with

- [Simplicity](https://banes-lab.com/records/lex/simplicity.md)

## tensions

- [Open/Closed Principle (OCP) Simplicity](https://banes-lab.com/records/tension/open-closed-principle-ocp-simplicity.md)

## referenced-by

- [Strategy Pattern](https://banes-lab.com/records/arch/strategy-pattern.md)
- [Command Pattern](https://banes-lab.com/records/arch/command-pattern.md)
- [State Pattern](https://banes-lab.com/records/arch/state-pattern.md)
- [Chain of Responsibility Pattern](https://banes-lab.com/records/arch/chain-of-responsibility-pattern.md)
- [Visitor Pattern](https://banes-lab.com/records/arch/visitor-pattern.md)
- [Factory Pattern](https://banes-lab.com/records/arch/factory-pattern.md)
- [Factory Method Pattern](https://banes-lab.com/records/arch/factory-method-pattern.md)
- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)
- [Extension Points](https://banes-lab.com/records/arch/extension-points.md)
- [Dynamic Dispatch](https://banes-lab.com/records/arch/dynamic-dispatch.md)
- [Runtime Extensibility](https://banes-lab.com/records/arch/runtime-extensibility.md)
- [Polymorphism](https://banes-lab.com/records/arch/polymorphism.md)
- [Decorator Pattern](https://banes-lab.com/records/arch/decorator-pattern.md)
- [Composite Pattern](https://banes-lab.com/records/arch/composite-pattern.md)
