[iOS Dev] Singleton Design Pattern

คนหลายคน (รวมทั้งตัวผมเอง) เคยมีข้อสงสัยว่า
เราอยากสร้าง Global Object ที่ใช้ได้ทั้ง Apps จะทำอย่างไร ?
ซึ่ง Global Object ตัวนี้เราจะมั่นใจได้ว่า
ทั้งโปรแกรมเราจะสร้างได้แค่ Instance เดียวเท่านั้น
เพื่อใช้ร่วมกันได้ทั้งโปรแกรม

หลายคนจะเลือกประกาศ Something ไว้ใน Application Delegate
แล้วเรียกใช้ Object ตัวนั้นผ่าน Application Delegate
นั่นเป็นสิ่งที่ไม่ถูก ไม่ควรนัก! :\

ลองหัดใช้ Singleton Design Pattern เวลาอยากทำอะไรแบบนี้ดูครับ :)
ลองหาข้อมูลอ่านเองนะครับ
ผมทิ้งไว้แค่ Example Code เพื่อกันตัวเองลืมก็พอ :P

กรณีนี้ผมจะสร้าง Services Class ตัวนึงด้วย Singleton Pattern แบบที่ใช้ GCD ด้วย
(เดี๋ยวจะแปะแบบไม่ใช่ GCD ไว้ตอนท้ายนะ :)

จากนั้นใน Implementation File ก็จะเป็นการเขียน initialize method เพื่อสร้าง Instance ตัวนี้
และสามารถ Manipulate Object นี้ได้เลย ในที่นี้ผมเขียน App อ่านข่าวประจำวันขึ้นมา
ข้อมูลข่าวทั้งหมดก็จะอยู่ที่นี่ สามารถนำข้อมูลไปใช้ได้ทั้งโปรแกรมโดยที่เข้าถึง instance ตัวเดียวกัน


เวลาจะเรียกใช้ก็ง่ายๆ แค่ไปสร้าง Singleton Object ไว้แล้วเรียกผ่าน + sharedInstance; ซึ่งเป็น Class Method ที่เราสร้างไว้แค่นั้นเอง :)

งั้นคราวนี้มาดูในแบบที่ไม่ใช้ GCD กันบ้าง


ปิดท้าย! คำว่า shared ที่นำหน้าชื่อของ Singleton Object นี่คือว่าเป็น Naming Convention
ในการเขียน Singleton Design Pattern เลยนะครับ ควรจะทำตามเป็นอย่างยิ่ง :)

อ่ะ แปะให้สำหรับคนที่อ่านมาถึงตรงนี้ => http://www.galloway.me.uk/tutorials/singleton-classes/

Popular posts from this blog

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

"อีสุกอีใส" ประสบการณ์เมื่อต้องมาเป็นตอนอายุ 22