`

`
Powered by Blogger.

penerapan desain pattern abstract factory di php



         Abstract Factory ini masih berhubungan dengan Factory Method yang sudah saya sempat bahas kemarin. Abstract Factory mendefinisikan setiap Factory Method per setiap produknya dan setiap Factory Method merangkum operator baru. Abstract Factory menyediakan sebuah interface untuk menciptakan obyek yang terkait tanpa perlu menentukan class nyatanya.


         Disini saya contohkan sebuah laptop jaman sekarang terdapat 2 jenis, yaitu netbook dan notebook. Keduanya mempunyai ukuran dan klasifikasi tersendiri, bahasa kasarnya itu cetakan yang diperlukan sama untuk berbagai netbook dan notebook dengan merk yang berbeda. Ketika ada 2 produsen laptop, yaitu Acer dan Asus ingin memproduksi netbook dan notebook, mereka hanya tinggal mencontoh ukuran dan klasifikasi yang sudah disediakan (dalam hal ini ialah class Abstract Laptop_Factory). Kedua produsen tersebut hanya perlu menyediakan stampel merk dan tipe laptop yang ingin dibuat entah itu netbook atau notebook (dalam hal ini ialah class Abstract Laptop_Tipe_Merk). Dan di sisi konsumen, mereka hanya perlu menyebutkan merk dan tipe laptop (netbook atau notebook) yang ingin dibuat/dipesan. Maka akan diproduksi lah sebuah laptop sesuai pesanan si konsumen. Cukup jelaslah hasil penerawangan saya tentang design pattern yg satu ini ;). Sekarang kita lanjut ke penerapannya di php.




<?php

abstract class Laptop_Factory
{
abstract function netbook();
abstract function notebook();
}

class Asus_Factory extends Laptop_Factory
{
function netbook()
{
return new Tipe_Netbook("Asus");
}
function notebook()
{
return new Tipe_Notebook("Asus");
}
}



class Acer_Factory extends Laptop_Factory
{
function netbook()
{
return new Tipe_Netbook("Acer");
}
function notebook()
{
return new Tipe_Notebook("Acer");
}
}



abstract class Laptop_Tipe_Merk
{
abstract function ambil_tipe();
abstract function ambil_merk();
}



class Tipe_Netbook extends Laptop_Tipe_Merk
{
public $merk;
public $tipe = "Netbook";
function __construct($merk) {
$this->merk = $merk;
}

public function ambil_tipe()
{
return $this->tipe;
}



public function ambil_merk()
{
return $this->merk;
}
}



class Tipe_Notebook extends Laptop_Tipe_Merk
{
public $merk;
public $tipe = "Notebook";
function __construct($merk) {
$this->merk = $merk;
}



public function ambil_tipe()
{
return $this->tipe;
}



public function ambil_merk()
{
return $this->merk;
}
}

class Pilihan_Konsumen
{

public static function Create_Laptop_Factory($factoryName)
{
switch($factoryName)
{
case "Acer" :
return new Acer_Factory();
break;
case "Asus" :
return new Asus_Factory();
break;
}
}
}



class Tampilkan
{
function __construct($nama_merk)
{
$fc = Pilihan_Konsumen::Create_Laptop_Factory($nama_merk);
$netbook = $fc->netbook();
$notebook = $fc->notebook();
print_r($netbook);
echo '<br>';
print_r($notebook);
echo '<br><br>';
}
}



new Tampilkan("Asus");
new Tampilkan("Acer");
?>




Sesuai yang saya kutip dari buku Gang of Four Design Pattern, class dan object di atas masuk ke beberapa kriteria di bawah ini :

  • AbstractFactory (Laptop_Factory)
  • ConcreteFactory(Asus_Factory, Acer_Factory)
  • AbstractProduct(Laptop_Tipe_Merk)
  • Product(Tipe_Netbook, Tipe_Notebook)
  • Client(Pilihan_Konsumen)

                Design pattern ini banyak sekali dipakai dalam ilmu software enginering dan saya baru tau kalau keampuhan Java Swing yang GUI-nya bisa berubah-ubah menggunakan konsep design pattern Abstract Factory ini.
Bagikan :
+
Previous
Next Post »
0 Komentar untuk "penerapan desain pattern abstract factory di php"

 
Template By Kunci Dunia
Back To Top