[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/
เราอยากสร้าง Global Object ที่ใช้ได้ทั้ง Apps จะทำอย่างไร ?
ซึ่ง Global Object ตัวนี้เราจะมั่นใจได้ว่า
ทั้งโปรแกรมเราจะสร้างได้แค่ Instance เดียวเท่านั้น
เพื่อใช้ร่วมกันได้ทั้งโปรแกรม
หลายคนจะเลือกประกาศ Something ไว้ใน Application Delegate
แล้วเรียกใช้ Object ตัวนั้นผ่าน Application Delegate
นั่นเป็นสิ่งที่ไม่ถูก ไม่ควรนัก! :\
ลองหัดใช้ Singleton Design Pattern เวลาอยากทำอะไรแบบนี้ดูครับ :)
ลองหาข้อมูลอ่านเองนะครับ
ผมทิ้งไว้แค่ Example Code เพื่อกันตัวเองลืมก็พอ :P
กรณีนี้ผมจะสร้าง Services Class ตัวนึงด้วย Singleton Pattern แบบที่ใช้ GCD ด้วย
(เดี๋ยวจะแปะแบบไม่ใช่ GCD ไว้ตอนท้ายนะ :)
และสามารถ Manipulate Object นี้ได้เลย ในที่นี้ผมเขียน App อ่านข่าวประจำวันขึ้นมา
ข้อมูลข่าวทั้งหมดก็จะอยู่ที่นี่ สามารถนำข้อมูลไปใช้ได้ทั้งโปรแกรมโดยที่เข้าถึง instance ตัวเดียวกัน
งั้นคราวนี้มาดูในแบบที่ไม่ใช้ GCD กันบ้าง
ปิดท้าย! คำว่า shared ที่นำหน้าชื่อของ Singleton Object นี่คือว่าเป็น Naming Convention
ในการเขียน Singleton Design Pattern เลยนะครับ ควรจะทำตามเป็นอย่างยิ่ง :)
อ่ะ แปะให้สำหรับคนที่อ่านมาถึงตรงนี้ => http://www.galloway.me.uk/tutorials/singleton-classes/