Паттерн стратегии в функциональном программировании - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь написать пример шаблона разработки стратегии на функциональном языке программирования (не чисто функциональный, без объектов, без перегрузки функций), используя пример, упомянутый в Java DZone .

Хотя я понимаю, что многие функциональные возможности выходят за рамки функционального языка программирования.

Я что-то упускаю здесь с точки зрения концепции шаблонов проектирования?

: является оператором присваивания.

File FileCompressor

strategy:`noOp;

setCompressionAlgo:{[algo]
    strategy:algo
}

compressFiles:{[filesList]
    strategy[filesList]
 }

File ZipCompressor

zipCompress:{[fileList]
  //compress each file using the zip compression
 }

Файл RarCompressor

rarCompress:{[fileList]
  //compress each file using the rar compression
 }

Файловый клиент

start:{[path]
    filesList:getFiles[path];
    setCompressionAlgo[zipCompress];
    compressFiles[fileList]
 }

1 Ответ

0 голосов
/ 26 мая 2018

Обычно вы не сделаете стратегию глобальной (изменяемой) переменной.Вы можете упростить свой пример до

start: {[path]
    compressFiles: zipCompress;
    // change to
    // compressFiles: rarCompress
    // to use a different strategy

    // apply the strategy:
    compressFiles[fileList1]
    compressFiles[fileList2]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...