函数式编程中的策略模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数式编程中的策略模式相关的知识,希望对你有一定的参考价值。

我正在尝试使用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]
 }
答案

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

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

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

以上是关于函数式编程中的策略模式的主要内容,如果未能解决你的问题,请参考以下文章

函数式编程让你忘记设计模式

内部类与函数式编程

C#函数式编程中的惰性求值详解

用Map+函数式接口来实现策略模式

《On Java 8》中文版 第十三章 函数式编程

函数式编程