Menu
CoddyTech

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:

KategoriTujuanContoh
CreationalBagaimana object dibuatSingleton, Factory, Builder
StructuralBagaimana object disusunAdapter, Decorator, Composite
BehavioralBagaimana object berkomunikasiObserver, 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.

challenge icon

Tantangan

Mudah

Mari 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 bernama Pattern yang menetapkan kontrak untuk semua pola desain. Interface-mu harus mendeklarasikan dua method: String getCategory() yang mengembalikan kategori pola (Creational, Structural, atau Behavioral), dan String getPurpose() yang mengembalikan deskripsi tentang fungsi kategori pola tersebut.
  • PatternInfo.java: Buat tiga class yang mengimplementasikan interface Pattern, 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()]
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online