Abstract Pattern Di PHP

Halo perkenalkan nama saya ariadi ahmad. kali ini kita akan membahas desing pattern lagi yaitu abstract pattern.

Yang Ingin Membantu Saya Untuk Terus Berkontribusi Boleh Banget Klik Dibawah

Apa Itu Abstract Pattern

Menurut refactorin guru abstract pattern adala pola desain kreasi yang memungkinkan Anda menghasilkan family objek terkait tanpa menentukan kelas konkretnya. mungkin agak bingun ya dengan penjelasan di atas. intinya ketika kalian ingin membuat sebuah kelas dan punya family atau kelompok. maka kalian bisa menggunakan design pattern ini.

Contoh

Seperti diatas kita punya banyak variant seperti Art,Victorian,Modern. dengan product familinya

Time To Implement

Pertama untuk mengimplementasikan seperti di atas. maka yang pertama yang kita harus buat adalah Buat productnyaa dengan menggunakan factory yang sudah kita pelajarin pada tulisan sebelumnya.

Oke kita telah membuat dua product. selanjutnya kita buat concreate class Varianya yang mengimplementasikan produknya.

Selanjutnya Kita Buat Abstract Factory Untuk Membuat Productnya

Kita membuat sebuah abstract factory untuk membuat furniture. karena meja dan kursi kita anggap dia masuk sebagai family furniture.

Selanjutnya Kita Buat Concreate Class Variantnya.

dengan begini kita telah mengimplementasikan abstract factory.

How To Use?

Apa Kelebihanya?

Misalkan nih. kita pengen buat meja dan kursi dengan variant baru contoh Minimalist. is easy.

Lihat kita sudah menambah kode kita tapi tidak merubah kode yang lama. dengan begini kita bisa membuat banyak variant tanpa merusak kode yang lama.

Yang Ingin Membantu Saya Untuk Terus Berkontribusi Boleh Banget Klik Dibawah

Code Full

<?php

interface Kursi
{
    public function execute();
}

interface Meja
{
    public function execute();
}

interface Lemari 
{
    public function execute();
}


class MinimalistMeja implements Meja
{
    public function execute()
    {
        echo "Sedang Membuat Minimalist Meja";
    }  
}

class MinimalistKursi implements Kursi
{
    public function execute()
    {
        echo "Sedang Membuat Minimalist Kursi";
    }
}


class ModerenKursi implements Kursi
{
    public function execute()
    {
        echo "Sedang Membuat Kursi Moderen";
    }
}

class KlasikKursi implements Kursi
{
    public function execute()
    {
        echo "Sedang Membuat Kursi Klasik";
    }
}

class ModerenMeja implements Meja
{
    public function execute()
    {
        echo "Sedang Membuat Meja Moderen";
    }
}

class KlasikMeja implements Meja
{
    public function execute()
    {
        echo "Sedang Membuar Meja Klasik";
    }
}

// 
interface AbstractFurnitureFactory 
{
    public function createMeja(): Meja;
    public function createKursi() : Kursi;
}

class FurnitureModeren implements AbstractFurnitureFactory
{
    public function createMeja(): Meja
    {
        return new ModerenMeja;
    }

    public function createKursi(): Kursi
    {
        return new ModerenKursi;
    }
    
}

class FurnitureKlasik implements AbstractFurnitureFactory
{
    public function createMeja(): Meja
    {
        return new KlasikMeja;
    }

    public function createKursi(): Kursi
    {
        return new KlasikKursi;
    }
}

class FurnitureMinimalist implements AbstractFurnitureFactory
{
    public function createMeja(): Meja
    {
        return new MinimalistMeja;
    }

    public function createKursi(): Kursi
    {
        return new MinimalistKursi;
    }
}


// ariadi sedang pesan meja Moderen Dan Kursi Moderen

$AriadiPesanFurnitureModeren = new  FurnitureModeren;

$AriadiPesanFurnitureModeren->createMeja()->execute();
// Sedang Membuat Meja Moderen
$AriadiPesanFurnitureModeren->createKursi()->execute();
// Sedang Membuat Kursi Moderen

$AriadiPesanFurnitureMinimalist  = new FurnitureMinimalist;
$AriadiPesanFurnitureMinimalist->createMeja()->execute();
// Sedang Membuat Meja Minimalist
$AriadiPesanFurnitureMinimalist->createKursi()->execute();
// Sedang Membuat Kursi Minimalisth

Semoga Mudah Di Pahami. Salam Programmer Makassar

Last updated