using System; using FileCompression.Interfaces; namespace FileCompression.Services.Strategies; public class StrategyContext { private ICompressionStrategy? _compressionStrategy; public StrategyContext() { } public StrategyContext(ICompressionStrategy compressionStrategy) { _compressionStrategy = compressionStrategy; } public void SetStrategy(ICompressionStrategy compressionStrategy) { _compressionStrategy = compressionStrategy; } public void CompressFile(string sourcePath, string destinationPath, string basePath) { if (_compressionStrategy == null) { throw new InvalidOperationException("Compression strategy is not set."); } _compressionStrategy.CompressFile(sourcePath, destinationPath, basePath); } public void CompressDirectory(string sourcePath, string destinationPath, string basePath) { if (_compressionStrategy == null) { throw new InvalidOperationException("Compression strategy is not set."); } _compressionStrategy.CompressDirectory(sourcePath, destinationPath, basePath); } }