我正在尝试使用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]
}
答案 0 :(得分:1)
您通常不会将策略变为全局(可变)变量。您可以将示例简化为
start: {[path]
compressFiles: zipCompress;
// change to
// compressFiles: rarCompress
// to use a different strategy
// apply the strategy:
compressFiles[fileList1]
compressFiles[fileList2]
}