Singleton Pattern in Swift
ผมเขียน Blog เกี่ยวกับการใช้ Singleton Pattern บน Objective-C ไว้แล้ว จะสรุปง่ายๆ คือ Singleton Object คือ Object ที่เราอยากมั่นใจได้ว่า เมื่อใดก็ตามที่เราเรียก Object ตัวนี้ เราจะได้ตัวเดิมเสมอ หรือพูดอีกนัยหนึ่งว่า จะไม่มีการสร้างซ้ำเป็นครั้งที่สอง
คราวนี้ใน Swift วิธีการสร้างกลับหลากหลายขึ้น เท่าที่ผมเจอมีอยู่ 3 วิธีมาดูกันเลย
Approach A: Global Constant
เนื่องจากเราไม่สามารถประกาศ `ค่าคงที่` (Constant) ให้เป็น private ใน Class ได้ในตอนนี้ จึงต้องใช้ Global Constant แทน ถ้าทำได้เมื่อไหร่นี่จะเป็นวิธีที่สร้าง Singleton Object ที่ดูดีเลยทีเดียว
Approach B: Nested Struct
Struct ต่างกันกับ Class โดยที่เราสามารถมี static constant ภายใน Struct ได้ ดังนั้นจึงประกาศ nested struct type ใน Class เพื่อสร้าง singleton object ได้
Approach C: Dispatch Once (เป็นวิธีที่นิยมที่สุดเวลาเขียน Objective-C)
ส่วนนี่เป็นวิธีที่สุดคลาสสิคอยู่แล้ว โดยการนำ Feature ในการจัดการ Thread ที่เรียกว่า GCD (Grand Central Dispatching) เข้ามาช่วยในการจอง Thread สำหรับ Singleton Object :)
Approach D: Static Let (One-line Singleton)
ในที่สุดบน Swift 2 เราก็สามารถทำได้แล้ว
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
คราวนี้ใน Swift วิธีการสร้างกลับหลากหลายขึ้น เท่าที่ผมเจอมีอยู่ 3 วิธีมาดูกันเลย
Approach A: Global Constant
Approach B: Nested Struct
Approach C: Dispatch Once (เป็นวิธีที่นิยมที่สุดเวลาเขียน Objective-C)
ส่วนนี่เป็นวิธีที่สุดคลาสสิคอยู่แล้ว โดยการนำ Feature ในการจัดการ Thread ที่เรียกว่า GCD (Grand Central Dispatching) เข้ามาช่วยในการจอง Thread สำหรับ Singleton Object :)
Approach D: Static Let (One-line Singleton)
ในที่สุดบน Swift 2 เราก็สามารถทำได้แล้ว
\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/
Comments
Post a Comment