Skip to content

Implement AudioStrategyFactory for IAudioStrategy creation #30

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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