38 people like it.
Like the snippet!
Template pattern
Template pattern is a behavior-based pattern. Realized the importance of high order function, this is a way to use high order function. Still keep the type structure to organize my code.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
|
let connect conStr =
printfn "connect to database: %s" conStr
let query queryStr =
printfn "query database %s" queryStr
let disconnect () =
printfn "disconnect"
type Template(connF, queryF, disconnF) =
member this.Execute(conStr, queryStr) =
this.TemplateF conStr queryStr
member this.TemplateF
with get() =
let f conStr queryStr =
connF conStr
queryF queryStr
disconnF ()
f
let template() =
let s = Template(connect, query, disconnect)
s.Execute("<connection string>", "select * from tableA")
template()
|
val connect : conStr:string -> unit
Full name: Script.connect
val conStr : string
val printfn : format:Printf.TextWriterFormat<'T> -> 'T
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn
val query : queryStr:string -> unit
Full name: Script.query
val queryStr : string
val disconnect : unit -> unit
Full name: Script.disconnect
Multiple items
type Template =
new : connF:(string -> unit) * queryF:(string -> unit) * disconnF:(unit -> unit) -> Template
member Execute : conStr:string * queryStr:string -> unit
member TemplateF : (string -> string -> unit)
Full name: Script.Template
--------------------
new : connF:(string -> unit) * queryF:(string -> unit) * disconnF:(unit -> unit) -> Template
val connF : (string -> unit)
val queryF : (string -> unit)
val disconnF : (unit -> unit)
val this : Template
member Template.Execute : conStr:string * queryStr:string -> unit
Full name: Script.Template.Execute
property Template.TemplateF: string -> string -> unit
member Template.TemplateF : (string -> string -> unit)
Full name: Script.Template.TemplateF
val f : (string -> string -> unit)
val template : unit -> unit
Full name: Script.template
val s : Template
member Template.Execute : conStr:string * queryStr:string -> unit
More information