Jetpack Compose Academy · บทเรียน

รูปแบบ Repository

เป็นตัวกลางระหว่างแหล่งข้อมูลอย่างเป็นระเบียบ

บทเรียน 3 จาก 413 ขั้นตอน

รูปแบบ Repository เป็นบทเรียน Jetpack Compose Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Jetpack Compose Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Jetpack Compose Academy มีบทเรียนทั้งหมด 4 บทเรียน

ซ่อนรายละเอียดข้อมูล

ViewModel ของคุณไม่ควรรู้จัก DAO หรือเครือข่าย รีโพสซิทอรี จะซ่อนรายละเอียดเหล่านั้นไว้เบื้องหลังอินเทอร์เฟซที่สะอาดและเรียบง่าย

ประตูทางเดียวสู่ข้อมูล

รีโพสซิทอรี คือจุดเดียวที่ส่วนอื่นของแอปใช้ขอข้อมูล ไม่ว่าข้อมูลนั้นจะมาจาก Room เครือข่าย หรือหน่วยความจำ

ห่อหุ้ม DAO

ส่ง DAO ให้รีโพสซิทอรี แล้วให้รีโพสซิทอรีเปิดเผยเมธอดที่ใช้งานง่าย ผู้เรียกใช้จะเห็น บันทึก ไม่ใช่คำสั่งสอบถาม SQL

class NoteRepository(private val dao: NoteDao) {
    val notes = dao.observeAll()
}

เปิดเผยการกระทำ ไม่ใช่ตาราง

เพิ่มฟังก์ชันที่สื่อจุดประสงค์ เช่น addNote ชื่อฟังก์ชันบอกว่าจะเกิดอะไรขึ้น ส่วนกลไกการจัดเก็บจะถูกซ่อนไว้ภายใน

suspend fun addNote(text: String) = dao.insert(Note(text = text))

สลับแหล่งข้อมูลได้อย่างอิสระ

เนื่องจากผู้เรียกใช้พึ่งพารีโพสซิทอรี คุณจึงเปลี่ยนจาก Room ไปใช้ข้อมูลจำลองหรือ API ระยะไกลได้โดยไม่ต้องแก้ไข ViewModel

ทดสอบได้ง่ายขึ้น

การทดสอบสามารถส่งรีโพสซิทอรีจำลองให้ ViewModel ได้ จึงตรวจสอบตรรกะได้โดยไม่ต้องใช้ ฐานข้อมูล จริงบนดิสก์ ✅

class FakeRepo : NoteRepository { /* in-memory */ }

ฉีดรีโพสซิทอรีเข้าไป

ViewModel รับรีโพสซิทอรีผ่าน ตัวสร้าง และไม่สร้างรีโพสซิทอรีขึ้นมาเอง วิธีนี้ทำให้การพึ่งพาต่าง ๆ ชัดเจน

class NoteViewModel(private val repo: NoteRepository) : ViewModel()

รวมแหล่งข้อมูลหลายแห่ง

รีโพสซิทอรีสามารถผสานแคชกับเครือข่าย และตัดสินใจว่าจะส่งข้อมูลใดกลับมา UI เพียงขอข้อมูลครั้งเดียวและยังคง ไม่ต้องรับรู้รายละเอียดการทำงานเบื้องหลัง

ส่งต่อ Flow โดยตรง

สำหรับข้อมูลแบบตอบสนอง รีโพสซิทอรีสามารถส่งต่อ Flow ของ DAO ได้โดยตรง และเพิ่มการแปลงข้อมูลเฉพาะเมื่อแอปต้องการจริง ๆ

val notes: Flow<List<Note>> = dao.observeAll()

ใช้หนึ่งรีโพสซิทอรีต่อหนึ่งโดเมน

ให้รีโพสซิทอรีแต่ละรายการมุ่งเน้นเฉพาะด้าน: รายการหนึ่งสำหรับบันทึก และอีกรายการสำหรับผู้ใช้ แต่ละรายการรับผิดชอบข้อมูลและแหล่งข้อมูล เพียงหนึ่งส่วน

ชั้นการทำงานสะอาด บทบาทชัดเจน

UI แสดงข้อมูล, ViewModel เก็บสถานะ, รีโพสซิทอรีดึงข้อมูล และ Room จัดเก็บข้อมูล แต่ละ ชั้นมีหน้าที่เดียวและสามารถเปลี่ยนแทนได้

ตรวจสอบอย่างรวดเร็ว

หน้าที่หลักของรีโพสซิทอรีในสถาปัตยกรรมนี้คืออะไร

ทบทวน: ชั้นกลางที่สะอาด

คุณวาง รีโพสซิทอรี ไว้ระหว่าง ViewModel กับข้อมูล โดยเปิดเผยการกระทำและ Flow พร้อมซ่อนแหล่งที่มา ขั้นต่อไปคือทำให้ระบบทำงานแบบออฟไลน์เป็นอันดับแรก

เริ่มต้นได้ฟรี

เรียนรู้ Kotlin ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “รูปแบบ Repository” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “รูปแบบ Repository” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Jetpack Compose Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Jetpack Compose Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบ Repository”

เป็นตัวกลางระหว่างแหล่งข้อมูลอย่างเป็นระเบียบ คุณปฏิบัติ Jetpack Compose Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Jetpack Compose Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Jetpack Compose Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “รูปแบบ Repository” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Jetpack Compose Academy นี้ได้ไหม

ได้ บทเรียน Jetpack Compose Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เอนทิตี DAO และฐานข้อมูล
  2. การค้นหาแบบตอบสนองที่ส่งคืน Flow
  3. รูปแบบ Repository
  4. กลยุทธ์แคชแบบออฟไลน์เป็นหลัก
← กลับไปที่ Jetpack Compose Academy