Design Pattern

Sebelum kita lihat dengan lebih mendalam mengenai design pattern, kita lihat kembali ke tutorial sebelum ini iaitu tutorial convenience library. Lihat code yang paling terakhir, yang ini:

...
final Pengguna kassim = new Pengguna(
        "Kassim",
        25,
        "Lelaki",
        "123, Jalan 1",
        "Kampung Dusun",
        "kassimkgdusun@gmail.com",
        "012-1234567",
        "01-1234567",
        "CIMB Bank",
        "123456ABC",
        "ABC123456",
        Timestamp.from(now()),
        null);
...

Kalau lihat code tersebut, parameter untuk constructor terlalu banyak. Contoh kalau code tersebut ditulis oleh orang lain, adakah anda yakin kedudukan data tersebut memang betul ada di tempat yang betul.

Sekali pandang memang tak salah, tetapi tak ada ke cara yang lebih elok?

Builder

Perkenalkan Builder!

Oleh sebab kita sudah diperkenalkan dengan Lombok, kita akan menggunakan Lombok untuk membuat Builder. Tambah sahaja annotation @Builder untuk class Pengguna:

@Data
@AllArgsConstructor
@Builder
public class Pengguna {
    private String nama;
    private int umur;
    private String jantina;
    private String alamat1;
    private String alamat2;
    private String email;
    ...

Cara untuk menggunakan builder adalah seperti berikut:

final Pengguna kassim = Pengguna.builder()
        .nama("Kassim")
        .umur(25)
        .jantina("Lelaki")
        .alamat1("123, Jalan 1")
        .alamat2("Kampung Dusun")
        .email("kassimkgdusun@gmail.com")
        .telefonBimbit("012-1234567")
        .telefonRumah("01-1234567")
        .namaBank("CIMB Bank")
        .noAkaunBank("123456ABC")
        .noAkaunKwsp("ABC123456")
        .waktuDaftar(Timestamp.from(now()))
        .waktuKemaskini(null)
        .build();

Sekarang barulah jelas data-data tersebut dimasukkan ke mana.

Jika anda ingin lihat bagaimana code untuk builder, guna sahaja Delombok seperti yang kita sudah lihat di tutorial sebelum ini.

Balik ke topik design pattern. Builder ialah salah satu daripada design pattern. Design pattern bermaksud cara-cara untuk menulis atau menyusun code untuk masalah yang ramai sudah hadapi.

Jika anda masih baru dalam programming, anda mungkin biasa melihat code dalam tutorial mula dari main() kemudian menjalankan code berikutnya satu per satu sehinggalah habis.

Dalam situasi sebenar, struktur code bukannya sebegitu, tetapi ada di merata-rata tempat. Jadi, design pattern boleh digunakan sebagai panduan untuk menjadikan code lebih teratur.

Design Pattern dalam Java

Setiap design pattern ada gelarannya.

Dalam tutorial sebelum-sebelum ini, kita sudah lihat beberapa design pattern dalam Java; antaranya DAO dan Service, dependency injection, module, object pool, dan facade.

Saya memang tidak mengharapkan anda untuk menghafal semua design pattern yang ada. Yang saya boleh cadangkan adalah anda boleh cari senarai design pattern dalam mana-mana website, kemudian setiap hari atau setiap minggu jenguk-jenguk website tersebut dan tengok satu atau dua design pattern.

Website untuk design pattern yang saya selalu tengok adalah yang ini:

java-design-patterns.com

Di website tersebut, anda juga boleh tapis design pattern mengikut tahap kesukaran. Jika anda baru bermula, klik sahaja pada difficulty-beginner.

Kritik

Ada beberapa golongan yang mengkritik design pattern.

Bagi sesetengah orang, design pattern menandakan kelemahan sesuatu programming language. Contoh untuk design pattern Builder, dalam sesetengah programming language lain tidak perlu membuat builder, hanya perlu menggunakan parameterized constructor untuk menyelesaikan masalah yang sama.

Design pattern hanyalah panduan, anda boleh pilih untuk tidak menggunakan design pattern jika anda tidak mahu.

Website ini menggunakan cookie yang dikendalikan oleh pihak ketiga. Anda boleh membaca dengan lebih lanjut di sini. Dengan menggunakan website ini, anda bersetuju dengan penggunaan cookie tersebut.

Setuju