/// <summary> /// Создаёт конкретную реализацию файлового компрессора. /// </summary> /// <exception cref="MemoryLacksException"> /// Длина блока, выбранная для чтения файла, превышает объём доступной памяти. /// </exception> public virtual IFileCompressor Create() { try { ICompressionFileOpener fileOpener = CreateFileOpener(); IStream2StreamPump pump = CreatePump(); IFileCompressor compressor = new FileCompressor(fileOpener, pump); return(compressor); } catch (MemoryLacksException exception) { // TODO: пробовать уменьшать длину блока throw new MemoryLacksException("Длина блока, выбранная для чтения файла," + " превышает объём доступной памяти.", exception); } }
public FileCompressor(ICompressionFileOpener fileOpener, IStream2StreamPump pump) { _pump = pump; FileOpener = fileOpener; }