บทความที่แล้ว เราได้เรียนรู้ Subcomponent และ Subcomponent Builder ไปแล้ว ในบทความนี้เราจะมาเรียนรู้อีกหนึ่งวิธี ที่ Dagger จัดเตรียมไว้ให้ สำหรับ Android Developer โดยเฉพาะ โดยในบทความนี้เราจะพูดถึง Dagger Android Injection ซึ่งทำให้ผู้พัฒนาสามารถใช้งาน Dagger เพื่อพัฒนา Application ได้สะดวกยิ่งขึ้น โดยบทความนี้ เป็นส่วนหนึ่งของชุดบทความที่มีเนื้อหาแบ่งออกเป็นหัวข้อดังนี้
- Dependency Injection Concept & Scope
- Component & Component Builder & @BindInstance
- Component dependencies & Qualified types
- Subcomponent & SubComponent Builder
- Dagger Android Injection
Dagger Android Injection
จากบทความที่เราเรียนรู้มาทั้งหมด สิ่งหนึ่งที่เราจะสังเกตเห็นได้จากการใช้งาน Dagger ทุกครั้งที่เราต้องการจะ Inject Dependencies เราต้องสร้าง Component ขึ้นมาก่อน ซึ่งขั้นตอนในการสร้างเราต้องรู้ว่า Component นั้นต้องการ Module หรือ Object Instance อะไรบ้าง แต่ละ Module ต้องรับ Argument เป็นอะไร แล้ว Parent Compoment ของมันคือตัวไหน ดังตัวอย่างด้านล่าง
จากโค้ดด้านบน เราจะเห็นว่าเกิดการผูกมัด (coupled) ระหว่าง Activity/Fragment กับ Component หรือ Module ต่างๆของ Component คำถามที่เกิดขึ้นคือ ทำไม Activity/Fragment ต้องรู้จัก Component หรือ Module เหล่านั้น รวมถึงวิธีการสร้างเพื่อให้ได้มาซึ่ง Component ที่ต้องการ เป็นไปได้ไหมที่จะลดการผูกมัด (de-coupled) ที่เกิดขึ้น คำถามเหล่านี้ จึงเป็นที่มาของวิธีใหม่ที่ Dagger จัดเตรียมไว้ให้สำหรับพัฒนา Application บน Android ซึ่งเรียกว่า Dagger Android Inject
ในบทความนี้ผมขอไม่ลงรายละเอียดของ Dagger Android Injection ไว้ในนี้ เนื่องจากเนื้อหาค่อนข้างยาว และผมเคยเขียนเอาไว้แล้วค่อนข้างละเอียด ผู้อ่านสามารถติดตามได้จาก Link ด้านล่าง โดยเนื้อหาจะแบ่งออกเป็น 3 ตอนคือ
- Part1 — Inject Activity with Dagger Android Injection
- Part2 — Eliminate Boilerplate code in Dagger Android Injection
- Part3 — Inject Fragment with Dagger Android Injection
หลังจากที่เราได้เรียนรู้การใช้ Dagger รูปแบบต่างๆแล้ว ขั้นถัดไปถือการฝึกฝนทำความเข้าใจกับมัน และประยุกต์ใช้ให้เหมาะกับงานของเราเพราะทุกวิธีการล้วนมีขอดีและข้อเสียในตัวมันเอง
หวังว่าบทความที่เขียนนี้จะเป็นประโยชน์สำหรับผู้อ่านทุกคน โดยเฉพาะผู้ที่สนใจจะใช้ Dagger2 ในงานที่ทำอยู่ และถ้าเห็นว่า Blog นี้มีประโยชน์ ช่วยสนับสนุนด้วยการฝากกด ❤️ กด Share ให้กันด้วยนะครับ จะได้มีกำลังใจในการเขียนบทความต่อๆไป ขอบคุณครับ 😃