Pengantar Pola Desain
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 89 dari 110.
Pola desain adalah solusi teruji untuk masalah umum yang berulang kali dihadapi pengembang saat membangun perangkat lunak. Daripada menciptakan ulang solusi setiap kali, kamu dapat menerapkan pola yang sudah mapan ini untuk menyelesaikan tantangan serupa dengan cara yang konsisten dan mudah dipelihara.
Anggap design pattern sebagai resep. Seperti koki yang tidak menciptakan cara baru untuk membuat roti setiap kali, programmer menggunakan pattern yang telah disempurnakan selama puluhan tahun. Pattern ini memanfaatkan konsep OOP yang sudah kamu pelajari, yaitu class, inheritance, interface, dan polymorphism, lalu menggabungkannya dengan cara tertentu untuk menyelesaikan masalah tertentu.
Pola desain biasanya dikelompokkan ke dalam tiga kategori:
| Kategori | Tujuan | Contoh |
|---|---|---|
| Penciptaan | Bagaimana object dibuat | Singleton, Factory |
| Struktural | Bagaimana object disusun | Adapter, Decorator |
| Perilaku | Bagaimana object berkomunikasi | Observer, Strategy |
Dalam pelajaran berikutnya, kamu akan mempelajari pola-pola tertentu dari setiap kategori. Setiap pola menangani masalah yang berbeda: memastikan hanya ada satu instance dari sebuah class, membuat object tanpa menentukan class yang tepat, atau memungkinkan object memberi tahu object lain tentang perubahan. Memahami kapan dan mengapa menggunakan setiap pola sama pentingnya dengan mengetahui cara menerapkannya.
Tantangan
MudahMari kita bangun sistem pemecahan masalah sederhana yang menunjukkan cara pola desain mengatur kode berdasarkan kategori! Kamu akan membuat struktur yang mengelompokkan berbagai tantangan perangkat lunak dan menyarankan jenis pola yang mungkin membantu menyelesaikannya.
Kamu akan mengatur kodemu ke dalam dua file:
patterns.dart: Buat enum bernamaPatternCategorydengan tiga nilai:creational,structural, danbehavioral. Masing-masing harus memiliki fieldString descriptionyang menjelaskan tujuannya:creational: "Handles object creation"structural: "Handles object composition"behavioral: "Handles object communication"
Problemyang mewakili tantangan perangkat lunak. Class ini harus memiliki fieldString namedan fieldPatternCategory category. Sertakan methodsuggest()yang mengembalikan string dengan format:[name] -> Use a [category description] patternmain.dart: Impor file pola milikmu dan tunjukkan cara berbagai masalah dipetakan ke kategori pola yang berbeda. Buat tiga instanceProblem:- Masalah bernama
Ensure single database connectiondengan kategoricreational - Masalah bernama
Make old API work with new systemdengan kategoristructural - Masalah bernama
Notify users when data changesdengan kategoribehavioral
suggest()pada setiap masalah dan cetak hasilnya.- Masalah bernama
Tantangan ini membantumu memahami cara pola desain dikategorikan berdasarkan jenis masalah yang diselesaikannya, sebuah konsep penting saat kamu mulai mempelajari pola-pola tertentu dalam pelajaran berikutnya!
Output yang diharapkan:
Ensure single database connection -> Use a Handles object creation pattern
Make old API work with new system -> Use a Handles object composition pattern
Notify users when data changes -> Use a Handles object communication patternCoba sendiri
import 'patterns.dart';
void main() {
// TODO: Buat tiga instance Problem:
// 1. name: "Ensure single database connection", category: creational
// 2. name: "Make old API work with new system", category: structural
// 3. name: "Notify users when data changes", category: behavioral
// TODO: Panggil suggest() untuk setiap masalah dan cetak hasilnya
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online