函数式编程中的策略模式

时间:2018-05-26 17:23:22

标签: functional-programming kdb strategy-pattern

我正在尝试使用Java DZone中提到的示例在函数式编程语言中编写策略设计模式示例(不是纯粹的功能,没有对象,没有函数重载)。

虽然我知道函数式编程语言中的许多功能都是开箱即用的。

我是否在设计模式概念方面遗漏了什么?

:是赋值运算符。

文件FileCompressor

strategy:`noOp;

setCompressionAlgo:{[algo]
    strategy:algo
}

compressFiles:{[filesList]
    strategy[filesList]
 }

文件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 :(得分:1)

您通常不会将策略变为全局(可变)变量。您可以将示例简化为

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

    // apply the strategy:
    compressFiles[fileList1]
    compressFiles[fileList2]
}