Menu
CoddyTech

Pengantar Pola Desain

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 51 dari 70.

Pola desain adalah solusi teruji untuk masalah umum yang berulang kali dihadapi pengembang saat membuat perangkat lunak. Daripada menemukan kembali solusi setiap kali, pola memberi kita kosakata bersama dan pendekatan teruji untuk menyusun kode.

Anggap design pattern sebagai cetak biru. Design pattern tidak memberikan kode persis untuk kamu salin, tetapi menjelaskan cara mengatur class dan object untuk menyelesaikan tantangan tertentu. Saat seseorang berkata, "gunakan pattern Factory di sini," developer berpengalaman langsung memahami struktur umum yang diusulkan.

Pola desain terbagi menjadi tiga kategori utama:

KategoriTujuanContoh
PembuatanBagaimana object dibuatSingleton, Factory
StrukturalBagaimana object disusunAdapter, Decorator
PerilakuBagaimana object berkomunikasiObserver, Strategy

Pola-pola yang akan kita bahas dibangun langsung berdasarkan konsep OOP yang sudah kamu pelajari, yaitu interface, inheritance, polymorphism, dan composition. Setiap pola memanfaatkan dasar-dasar ini dengan cara tertentu untuk mencapai fleksibilitas, kemudahan pemeliharaan, atau penggunaan ulang.

Dalam pelajaran berikutnya, kamu akan menerapkan beberapa pola penting, dimulai dengan Singleton, Factory, Observer, dan Strategy. Memahami pola-pola ini akan membantumu mengenali solusi umum dalam codebase yang sudah ada dan membuat keputusan arsitektur yang lebih baik dalam proyekmu sendiri.

challenge icon

Tantangan

Mudah

Mari kita buat sistem katalog pattern sederhana yang mengatur informasi design pattern di beberapa file. Ini akan membantumu memahami cara pattern dikategorikan sambil berlatih mengatur kode dengan baik.

Kamu akan membuat tiga file untuk memisahkan tanggung jawab yang berbeda:

  • Pattern.cs: Definisikan class Pattern di namespace Patterns yang merepresentasikan satu design pattern. Setiap pattern harus memiliki Name, Category (Creational, Structural, atau Behavioral), dan Description. Sertakan method GetSummary() yang mengembalikan string dengan format: [{Category}] {Name}: {Description}
  • PatternCatalog.cs: Buat class PatternCatalog di namespace Patterns yang mengelola kumpulan pattern. Katalogmu harus bisa menambahkan pattern dan memiliki method GetPatternsByCategory(string category) yang mengembalikan list semua pattern yang cocok dengan kategori tersebut. Sertakan juga method GetAllSummaries() yang mengembalikan list string ringkasan untuk semua pattern dalam katalog.
  • Program.cs: Gabungkan semuanya dengan membuat katalog dan mengisinya dengan pattern berdasarkan input. Lalu tampilkan pattern yang difilter berdasarkan kategori.

Kamu akan menerima input berikut:

  • Jumlah pattern yang akan ditambahkan
  • Untuk setiap pattern: tiga baris yang berisi nama, kategori, dan deskripsi
  • Kategori untuk memfilter

Setelah menambahkan semua pattern ke katalogmu, cetak ringkasan pattern yang cocok dengan kategori filter, satu per baris. Jika tidak ada pattern yang cocok, cetak No patterns found.

Contohnya, jika inputnya adalah:

3
Singleton
Creational
Ensures only one instance exists
Observer
Behavioral
Notifies dependents of state changes
Factory
Creational
Creates objects without specifying exact class
Creational

Outputnya adalah:

[Creational] Singleton: Ensures only one instance exists
[Creational] Factory: Creates objects without specifying exact class

Tantangan ini menunjukkan bagaimana mengatur class terkait ke dalam file terpisah dapat menjaga basis kodemu tetap rapi dan mudah dipelihara, prinsip yang menjadi semakin penting saat kamu menerapkan design pattern sungguhan dalam pelajaran mendatang!

Coba sendiri

using System;
using System.Collections.Generic;
using Patterns;

class Program
{
    public static void Main(string[] args)
    {
        // Baca jumlah pola
        int n = Convert.ToInt32(Console.ReadLine());
        
        // Buat PatternCatalog baru
        PatternCatalog catalog = new PatternCatalog();
        
        // TODO: Baca detail setiap pola (nama, kategori, deskripsi)
        // dan tambahkan ke katalog
        for (int i = 0; i < n; i++)
        {
            string name = Console.ReadLine();
            string category = Console.ReadLine();
            string description = Console.ReadLine();
            
            // TODO: Buat Pattern dan tambahkan ke katalog
        }
        
        // Baca kategori yang akan digunakan untuk memfilter
        string filterCategory = Console.ReadLine();
        
        // TODO: Ambil pola berdasarkan kategori filter
        // dan cetak ringkasannya
        // Jika tidak ada pola yang cocok, cetak "No patterns found"
    }
}
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 C# online