# Proxy Pattern

Record: `arch:proxy-pattern`
Kind: pattern
Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)
Severity: contextual
Scope: access control, remote access, lazy loading
Canonical: https://banes-lab.com/ontology#arch-proxy-pattern

## Repair

- Refactored by: Introduce Proxy
- Detected by: bypassed access wrapper
- Violated by: uncontrolled direct resource access
- Measured by: proxy bypass count
- Enforced by: access rules

## requires

- [Controlled Access](https://banes-lab.com/records/lex/controlled-access.md)

## reinforces

- [Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)
- [Security](https://banes-lab.com/records/lex/security.md)

## enables

- [Lazy Load](https://banes-lab.com/records/lex/lazy-load.md)
- [Authorization](https://banes-lab.com/records/arch/authorization.md)
- [Remote Stub](https://banes-lab.com/records/lex/remote-stub.md)

## conflicts-with

- [Direct Access](https://banes-lab.com/records/lex/direct-access.md)

## tensions-with

- [Transparency / Debugging](https://banes-lab.com/records/lex/transparency-debugging.md)

## tensions

- [Proxy Pattern Transparency / Debugging](https://banes-lab.com/records/tension/proxy-pattern-transparency-debugging.md)
