Skip to content

Implement AudioStrategyFactory for IAudioStrategy creation #30

@danieljsinclair

Description

@danieljsinclair

Issue Type

Implementation - Architecture Refactoring

Severity

High - Critical path for Option B implementation

Problem Statement

Current AudioModeFactory creates IAudioMode instances. Need AudioStrategyFactory to create IAudioStrategy instances following consolidation.

Current State

  • AudioModeFactory creates IAudioMode instances
  • Factory decides between ThreadedAudioMode and SyncPullAudioMode
  • Tied to old IAudioMode interface
  • No IAudioStrategy creation capability

Target State

AudioStrategyFactory creates IAudioStrategy instances:

  • Decides between ThreadedStrategy and SyncPullStrategy based on API capabilities
  • Follows OCP (no switch statement, uses types)
  • Encapsulates selection logic (SRP)
  • Easy to add new strategies

Implementation Tasks

  1. Create AudioStrategyFactory.h/.cpp
  2. Implement createStrategy() method
  3. Remove old AudioModeFactory
  4. Update all creation points to use AudioStrategyFactory

Acceptance Criteria

  • AudioStrategyFactory.h/.cpp created
  • Implements createStrategy() returning IAudioStrategy*
  • Selection logic uses types (no enum/switch)
  • Old AudioModeFactory removed
  • All creation points updated to use AudioStrategyFactory
  • No circular dependencies introduced
  • Easy to add new strategies (OCP compliance)

Testing Requirements

  • Factory creates correct strategy type based on capabilities
  • Both ThreadedStrategy and SyncPullStrategy can be created
  • Factory can be mocked for unit tests
  • No test failures introduced

Related Issues

References

  • ARCHITECTURE_FILE_CLASS_AUDIT.md - Factory pattern violations
  • AUDIO_MODULE_ARCHITECTURE.md - Phase 6 consolidation plan

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions