F#-工厂方法设计模式
|
以下是我尝试使用F#实现工厂方法设计模式同时尝试使其更具功能性(即不是直接的OO实现)。以下是我想到的:
type ISkateBoard = abstract Model : unit -> string
type SkateBoard =
| Roskopp
| Peters
interface ISkateBoard
with member this.Model() =
match this with
| Roskopp-> \"Rob Roskopp...\"
| Peters -> \"Duane Peters...\"
let assemble model : ISkateBoard =
match model with
| \"Roskopp\" -> Roskopp :> ISkateBoard
| \"Peters\" -> Peters :> ISkateBoard
| _ -> failwith \"no such skateboard model..\"
let SkateBoardFactory assemble model = assemble model
let SantaCruzFactory = SkateBoardFactory assemble
这是工厂方法设计模式的适当实现吗?实际的F#应用程序中使用该模式吗?
没有找到相关结果
已邀请:
2 个回复
程琶
现在,工厂将只是simply2ѭ类型的函数。例如(使用F#对象表达式):
我认为这种方法的好处是您可以对类型的具体表示做一些工作(例如需要模式匹配的一些计算),但是您可以使用the4ѭ将具体类型转换为抽象类型。 这与函数式编程中的常规方法非常匹配-您经常使用一个数据的不同表示形式并在它们之间进行转换(取决于哪种表示形式更适合特定问题)。
栖很钾是狠
您会发现OO中的许多设计模式都只是在函数式编程中消失了。 用
创建一个额外的函数来执行您的功能。
由于具有一流的功能,您只需分配ѭ8。