Skip to content

[EPIC] refactor: Apply Facade pattern to reduce protocol header complexity #577

Description

@kcenon

Overview

The network_system currently has 100+ header files with significant duplication across protocol implementations. This EPIC tracks the effort to apply the Facade pattern to simplify the public API and reduce header complexity.

Problem Statement

Current State

  • Over 100 header files in the include directory
  • Each protocol (TCP, UDP, HTTP, WebSocket) has similar structures duplicated
  • Internal implementation details are exposed in public headers
  • High compilation times due to header dependencies

Kent Beck's Simple Design Violations

  • No Duplication: Protocol implementations share similar patterns but duplicate code
  • Fewest Elements: Too many public headers expose internal details
  • Reveals Intention: Complex header structure obscures the actual API

Goals

  1. Reduce public header count by 60-70%
  2. Create unified protocol interfaces (IProtocolClient, IProtocolServer)
  3. Separate internal headers: include/ vs src/internal/
  4. Improve compilation times

Sub-Tasks

  • Create common protocol interfaces (IProtocolClient, IProtocolServer)
  • Migrate circuit_breaker to common_system (see related task)
  • Consolidate integration adapters into unified NetworkSystemBridge
  • Move internal implementation headers to src/internal/
  • Create facade classes for each protocol family
  • Update documentation and migration guide

Acceptance Criteria

  • Public header count reduced to < 40 files
  • All protocol clients implement IProtocolClient
  • All protocol servers implement IProtocolServer
  • Internal headers not accessible from include path
  • No breaking changes to existing public API
  • All tests pass
  • Documentation updated

Related Issues

  • common_system#314: Cross-system infrastructure consolidation
  • common_system#315: circuit_breaker extraction

References

  • Kent Beck's "Four Rules of Simple Design"
  • Facade Design Pattern (GoF)

Metadata

Metadata

Assignees

Labels

architectureArchitectural changes and designepicEpic issue tracking multiple sub-taskspriority:mediumMedium priority issuerefactoringCode refactoring and improvements

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions