0Pricing
Swift Academy · Pelajaran

Prinsip Rancangan Berorientasi Protokol

Mengutamakan komposisi protokol daripada pewarisan class untuk rancangan yang fleksibel.

Prinsip Rancangan Berorientasi Protokol adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Selamat Datang

Pemrograman Berorientasi Protokol (POP) lebih mengutamakan komposisi protokol daripada pewarisan kelas untuk membangun kode Swift yang fleksibel, mudah diuji, dan dapat digunakan kembali.

Masalah dengan Pewarisan

Hierarki kelas yang terlalu dalam menimbulkan masalah: • Subkelas mewarisi ALL keadaan dan perilaku kelas induk • Perubahan pada kelas induk dapat merusak subkelas • Tidak dapat mewarisi dari dua kelas Protokol mengatasi ketiga masalah tersebut.

Mulai dengan Protokol

```swift protocol Greetable { var greeting: String { get } func greet() } extension Greetable { func greet() { print(greeting) } // default implementation } ``` Ekstensi protokol menyediakan implementasi bawaan yang diperoleh setiap tipe yang mengikutinya tanpa kode tambahan.

Menyusun Perilaku

```swift protocol Persistable { func save() } protocol Networked { func fetch() async throws -> Data } protocol Loggable { func log(_ msg: String) } struct DataService: Persistable, Networked, Loggable { ... } ``` Gabungkan perilaku seperti balok LEGO—tidak diperlukan hierarki kelas.

Ekstensi Protokol untuk Logika Bersama

```swift extension Loggable { func log(_ msg: String) { print("[\(type(of: self))] \(msg)") } } // Every Loggable type gets this for free ```

Pemodelan Retroaktif

Protokol dapat diterapkan pada tipe yang tidak Anda miliki: ```swift protocol JSONConvertible { func toJSON() -> String } extension Int: JSONConvertible { func toJSON() -> String { "\(self)" } } ``` Tambahkan kesesuaian ke tipe pustaka standar tanpa membuat subkelas.

Tipe Nilai + Protokol

Struct yang mengikuti protokol memberi Anda semantik nilai *dan* polimorfisme: ```swift protocol Shape { var area: Double { get } } struct Circle: Shape { var radius: Double; var area: Double { .pi * radius * radius } } struct Square: Shape { var side: Double; var area: Double { side * side } } let shapes: [any Shape] = [Circle(radius:3), Square(side:4)] shapes.map { $0.area } // [28.27, 16] ```

Injeksi Dependensi melalui Protokol

```swift protocol DataStore { func save(_ data: Data) } struct FileStore: DataStore { func save(_ d: Data) { /* disk */ } } struct MockStore: DataStore { func save(_ d: Data) { /* test log */ } } class Service { let store: DataStore init(store: DataStore) { self.store = store } } ```

Kapan Menggunakan Kelas

Utamakan kelas ketika: • Anda memerlukan keadaan bersama yang dapat diubah (semantik referensi) • Anda memerlukan integrasi dengan API ObjC/UIKit • Pewarisan adalah model yang tepat (jarang) Gunakan protokol + struct sebagai pilihan bawaan untuk hal lainnya.

Konvensi Penamaan Protokol

• Protokol kapabilitas: akhiran `-able`, `-ible`, `-ing` (Equatable, Hashable, Coding) • Protokol delegasi: akhiran `Delegate` atau `DataSource` • Peran abstrak: kata benda (`Store`, `Parser`, `Renderer`) Nama yang baik membuat kode berorientasi protokol dapat menjelaskan dirinya sendiri.

Pemeriksaan Singkat

Apa yang disediakan ekstensi protokol untuk tipe yang mengikutinya?

Rangkuman

Hal-hal penting: • Utamakan protokol + struct daripada hierarki kelas • Ekstensi protokol menyediakan implementasi bawaan bersama • Susun perilaku dari protokol kecil dengan satu tujuan • Protokol memungkinkan injeksi dependensi agar kode mudah diuji • Gunakan kelas hanya untuk semantik referensi dan interoperabilitas ObjC Kursus selesai! Berikutnya: Tipe Nilai vs Tipe Referensi secara Mendalam.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Prinsip Rancangan Berorientasi Protokol” gratis?

Ya — teks lengkap “Prinsip Rancangan Berorientasi Protokol” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Prinsip Rancangan Berorientasi Protokol”?

Mengutamakan komposisi protokol daripada pewarisan class untuk rancangan yang fleksibel. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Prinsip Rancangan Berorientasi Protokol” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Komposisi Protokol dengan &
  2. Kesesuaian Bersyarat
  3. Persyaratan Self dan Rancangan Equatable
  4. Prinsip Rancangan Berorientasi Protokol
← Kembali ke Swift Academy