Pengantar Pola Desain
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 64 dari 87.
Pola desain adalah solusi teruji untuk masalah umum yang berulang kali dihadapi developer saat membangun perangkat lunak. Daripada menciptakan ulang solusi setiap kali, kamu bisa menerapkan pola yang telah teruji waktu ini untuk mengatasi tantangan desain yang berulang.
Anggap design pattern sebagai cetak biru. Design pattern tidak memberikan kodemu yang sudah jadi untuk disalin dan ditempel, tetapi menjelaskan cara menyusun class dan object untuk menyelesaikan jenis masalah tertentu. Design pattern yang akan kamu pelajari memanfaatkan konsep OOP yang sudah kamu kuasai: pewarisan, interface, polimorfisme, dan komposisi.
Pola desain terbagi menjadi tiga kategori utama:
| Kategori | Tujuan | Contoh |
|---|---|---|
| Creational | Bagaimana object dibuat | Singleton, Factory, Builder |
| Structural | Bagaimana object disusun | Adapter, Decorator, Composite |
| Behavioral | Bagaimana object berkomunikasi | Observer, Strategy, Command |
Mengapa mempelajari pola desain? Pola desain memberimu kosakata bersama dengan developer lain: mengatakan "gunakan Factory di sini" langsung menyampaikan gagasan yang rumit. Pola desain juga membantumu menulis kode yang lebih fleksibel dan mudah dipelihara dengan menerapkan prinsip seperti "programkan ke antarmuka, bukan implementasi."
Dalam pelajaran berikutnya, kamu akan menerapkan beberapa pola penting, dimulai dengan pola kreasi seperti Singleton dan Factory, lalu beralih ke pola perilaku seperti Observer dan Strategy.
Tantangan
MudahMari buat classifier pola sederhana yang menunjukkan pemahamanmu tentang tiga kategori pola desain! Kamu akan membuat sistem yang mengategorikan pola dan menjelaskan tujuannya, serta menyusun kodemu dalam beberapa file.
Kamu akan membuat tiga file:
Pattern.java: Buat interface bernamaPatternyang menetapkan kontrak untuk semua pola desain. Interface-mu harus mendeklarasikan dua method:String getCategory()yang mengembalikan kategori pola (Creational, Structural, atau Behavioral), danString getPurpose()yang mengembalikan deskripsi tentang fungsi kategori pola tersebut.PatternInfo.java: Buat tiga class yang mengimplementasikan interfacePattern, masing-masing mewakili satu kategori pola desain:CreationalPattern: harus mengembalikan"Creational"untuk kategori dan"How objects are created"untuk tujuan.StructuralPattern: harus mengembalikan"Structural"untuk kategori dan"How objects are composed"untuk tujuan.BehavioralPattern: harus mengembalikan"Behavioral"untuk kategori dan"How objects communicate"untuk tujuan.Main.java: Satukan classifier polamu! Kamu akan menerima satu input: nama pola (String), yang akan berupa salah satu dari"Singleton","Factory","Adapter","Decorator","Observer", atau"Strategy".Berdasarkan input tersebut, buat object pola yang sesuai:
"Singleton"dan"Factory"adalah pola Creational"Adapter"dan"Decorator"adalah pola Structural"Observer"dan"Strategy"adalah pola Behavioral
Simpan object polamu dalam variabel bertipe
Pattern(interface tersebut) untuk menunjukkan prinsip pemrograman terhadap interface. Lalu, cetak tiga baris berikut:Pattern: [input pattern name]Category: [category from getCategory()]Purpose: [purpose from getPurpose()]
Kamu akan menerima satu input: nama pola desain (String).
Tantangan ini memperkuat pemahaman utama dari pelajaran: pola desain diatur ke dalam beberapa kategori berdasarkan masalah yang diselesaikannya. Dengan menggunakan interface, kamu juga berlatih prinsip "memprogram terhadap interface, bukan implementasi", sebuah konsep inti yang membuat pola desain begitu ampuh!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String patternName = scanner.nextLine();
// TODO: Deklarasikan variabel bertipe Pattern (interface)
Pattern pattern = null;
// TODO: Berdasarkan patternName, buat object pola yang sesuai:
// - "Singleton" dan "Factory" adalah pola Creational
// - "Adapter" dan "Decorator" adalah pola Structural
// - "Observer" dan "Strategy" adalah pola Behavioral
// TODO: Cetak output dengan format berikut:
// Pola: [nama pola dari input]
// Kategori: [kategori dari getCategory()]
// Tujuan: [tujuan dari getPurpose()]
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online