เนื่องจากมีโอกาสได้แบ่งปันเรื่อง MVP pattern ให้ทีมนิดหน่อย (แบบไม่ตั้งใจ)
ซึ่งมีเรื่องหนึ่งที่ติดค้างไว้ก็คือ
การ Inject Object จาก Storyboard ไปเลย
จะได้ไม่ต้องมาสร้าง object ขึ้นมาใน ViewController เอง
ทำให้การเขียน code ง่าย และ สะดวกขึ้น
จากตัวอย่าง code ในวันนี้อยู่ที่ Github
ซึ่งไปดูในไฟล์ ViewController.swift จะพบว่า function sort() ทำการสร้าง object จาก class SortController ขึ้นมา ดังนี้ [gist id="21d27ef67c97335aff1a4cc05dfec5e3" file="ViewController.swift"] คำอธิบาย class SortController นั้นคือ Presenter หรือตัวแทนการทำงาน หรือเป็นส่วน business logic ของระบบนั่นเอง ซึ่งจากตัวอย่างจะทำการเรียงลำดับข้อมูลตัวอักษร ดังนั้นเราจึงพยายามแยกการทำงานออกมาจาก ViewControllerจากการสร้าง object ของ SortController นี่เอง
จึงมีคำถามว่า ถ้าเราไม่อยากมาสร้าง object แบบนี้ล่ะ เนื่องจากไม่ต้องการให้ code ผูกมัดจนเกินไป (Tight coupling) มันมีวิธีอื่น ๆ อีกไหม ? ซึ่งตอบได้เลยว่ามีหลายวิธีมากเช่น- เขียนเอง
- ใช้ library เกี่ยวกับ dependency injection