Menu
CoddyTech

Pengantar Pola Desain

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 70 dari 91.

Pola desain adalah solusi teruji untuk masalah umum yang berulang kali dihadapi developer saat membangun perangkat lunak. Daripada membuat solusi dari awal setiap kali, kamu bisa menerapkan templat yang sudah terbukti ini untuk mengatasi tantangan serupa dalam kodemu sendiri.

Anggap pola desain sebagai resep. Sama seperti koki mengikuti resep untuk membuat hidangan yang telah disempurnakan seiring waktu, developer menggunakan pola desain untuk menyusun kode mereka dengan cara yang telah diuji dan disempurnakan oleh banyak programmer sebelum mereka.

Pola desain biasanya dikelompokkan ke dalam tiga kategori:

Kategori Tujuan Contoh
Kreasi Cara object dibuat Singleton, Factory
Struktural Cara object disusun Adapter, Decorator
Perilaku Cara object berkomunikasi Observer, Strategy

Sebenarnya, kamu telah menggunakan pattern sepanjang kursus ini tanpa menyadarinya. Saat kamu membuat class abstrak dengan method yang harus diimplementasikan oleh child class, kamu menerapkan salah satu bentuk pattern Template Method. Saat kamu menggunakan interface untuk menentukan kontrak, kamu sedang menyiapkan pattern Strategy.

Mempelajari pola desain memberimu kosakata bersama dengan developer lain. Daripada menjelaskan struktur yang rumit secara terperinci, kamu cukup mengatakan "Saya menggunakan pola Factory di sini" dan developer berpengalaman akan langsung memahami pendekatanmu. Dalam pelajaran berikutnya, kita akan menerapkan beberapa pola penting di PHP.

challenge icon

Tantangan

Mudah

Mari kita buat sistem pemformatan pesan sederhana yang menunjukkan bagaimana pola desain membantu menata kode. Kamu akan mengidentifikasi kategori pola yang menjadi bagian setiap komponen dan melihat bagaimana bagian-bagian berbeda dari sebuah sistem bekerja bersama.

Kamu akan menata kodemu dalam tiga file:

  • MessageFormatter.php: Buat interface bernama MessageFormatter yang menetapkan kontrak untuk memformat pesan. Interface ini harus memiliki satu method, yaitu format(string $message): string. Ini mewakili kategori perilaku. Kategori ini menetapkan cara object berkomunikasi dan memproses data.
  • Formatters.php: Sertakan file MessageFormatter dan buat dua class yang mengimplementasikan interface tersebut:
    • UppercaseFormatter: Method format()-nya mengembalikan pesan yang diubah menjadi huruf kapital
    • BracketFormatter: Method format()-nya membungkus pesan dengan tanda kurung siku seperti [message]
  • main.php: Sertakan file Formatters. Kamu akan menerima dua input: string pesan dan tipe formatter ("upper" atau "bracket").

    Buat fungsi bernama processMessage yang menerima MessageFormatter dan string pesan, lalu mengembalikan hasil yang sudah diformat. Fungsi ini tidak perlu mengetahui formatter spesifik yang diterimanya. Fungsi ini cukup memanggil format() pada object apa pun yang diberikan.

    Berdasarkan input tipe formatter, buat object formatter yang sesuai. Berikan object itu ke fungsi processMessage bersama pesan, lalu cetak hasilnya.

    Pada baris baru, cetak kategori pola yang diwakili struktur ini. Karena kita mendefinisikan perilaku yang dapat saling menggantikan melalui sebuah interface, cetak: Pattern category: Behavioral

Tantangan ini menunjukkan bagaimana interface memungkinkan kamu mengganti implementasi tanpa mengubah kode yang menggunakannya. Ini menjadi dasar untuk pola seperti Strategy yang akan kamu pelajari dalam pelajaran mendatang.

Coba sendiri

<?php
require_once 'Formatters.php';

// Baca input
$message = trim(fgets(STDIN));
$formatterType = trim(fgets(STDIN));

// TODO: Buat fungsi bernama processMessage yang menerima MessageFormatter
// dan string pesan, lalu mengembalikan hasil yang telah diformat


// TODO: Berdasarkan $formatterType ("upper" atau "bracket"), buat formatter yang sesuai


// TODO: Panggil processMessage dengan formatter dan pesan, lalu cetak hasilnya


// TODO: Cetak kategori pola pada baris baru
// Format: "Pattern category: Behavioral"

?>
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 PHP online