Pattern Builder ini adalah pattern terakhir dari kategori creational patterns yang ane bahas, artinya pattern ini design pattern yang menangangi pembuatan sebuah object... dan seperti biasa ane akan bahas dengan Java, C# dan PHP. pengertian pattern builder ini adalah algoritma yang berfungsi untuk memisahkan pembangunan object yang sulit dari representasinya sehingga konstrusksi yang sama dapat menghasilkan representasi yang beda. dalam hal ini akan ane kasi contoh status tentang wisata kuliner :D (jadi laper),
misal kita disini mendata tentang makanan khas dari setiap kabupaten di Indonesia. tentunya saat kita menulis data kuliner dari kabupaten tersebut kita akan menulis nama daerah kemudian makanan khas nya. waktu kita catat Banyuwangi, kita catat nama kabupaten, makanan dan minuman khas nya, begitu juga waktu kita mendata kuliner khas dari madura, prosesnya juga akan sama, menulis nama kabupaten kemudian menulis makanan dan minuman khas nya... apa hubungannya dengan pattern builder ?? :D seperti yang ane jelasin tadi, pattern builder ini memisahakan pembangunan object yang sulit dari representasinya dalam hal ini banyuwangi dan madura, konstruksi yang sama dalam hal ini mencatat datanya, menghasilkan representasi yang berbeda :D .... biar lebih jelas lagi, langsung kita contohkan dengan program Java, C# dan PHP
misal kita disini mendata tentang makanan khas dari setiap kabupaten di Indonesia. tentunya saat kita menulis data kuliner dari kabupaten tersebut kita akan menulis nama daerah kemudian makanan khas nya. waktu kita catat Banyuwangi, kita catat nama kabupaten, makanan dan minuman khas nya, begitu juga waktu kita mendata kuliner khas dari madura, prosesnya juga akan sama, menulis nama kabupaten kemudian menulis makanan dan minuman khas nya... apa hubungannya dengan pattern builder ?? :D seperti yang ane jelasin tadi, pattern builder ini memisahakan pembangunan object yang sulit dari representasinya dalam hal ini banyuwangi dan madura, konstruksi yang sama dalam hal ini mencatat datanya, menghasilkan representasi yang berbeda :D .... biar lebih jelas lagi, langsung kita contohkan dengan program Java, C# dan PHP
Java
package Builder;
public class MainClass {
public static void main(String[] args) {
KulinerBuilder oseng = new OsengKuliner();
Controller controller = new Controller(oseng);
controller.Build();
Kuliner kuliner = controller.GetKuliner();
System.out.println(kuliner);
KulinerBuilder madura = new MaduraKuliner();
controller = new Controller(madura);
controller.Build();
kuliner = controller.GetKuliner();
System.out.println(kuliner);
}
}
class Controller{
KulinerBuilder kuliner_bulider;
public Controller(KulinerBuilder kuliner_bulider) {
this.kuliner_bulider = kuliner_bulider;
}
public void Build(){
kuliner_bulider.DaerahBuilder();
kuliner_bulider.MakananBuilder();
kuliner_bulider.MinumanBuilder();
}
public Kuliner GetKuliner(){
return kuliner_bulider.GetKuliner();
}
}
class Kuliner{
private String daerah,makanan,minuman;
public void SetDaerah(String daerah){
this.daerah = daerah;
}
public String GetDaerah(){
return this.daerah;
}
public void SetMakanan(String makanan){
this.makanan = makanan;
}
public String GetMakanan(){
return this.makanan;
}
public void SetMinuman(String minuman){
this.minuman = minuman;
}
public String GetMinuman(){
return this.minuman;
}
public String toString(){
return "Kota "+GetDaerah()+" Makanan Khas nya "+GetMakanan()+" dan minuman khas nya "+GetMinuman();
}
}
interface KulinerBuilder{
public void DaerahBuilder();
public void MakananBuilder();
public void MinumanBuilder();
public Kuliner GetKuliner();
}
class OsengKuliner implements KulinerBuilder{
private Kuliner kuliner = null;
public OsengKuliner() {
kuliner = new Kuliner();
}
@Override
public void DaerahBuilder() {
kuliner.SetDaerah("Banyuwangi");
}
@Override
public void MakananBuilder() {
kuliner.SetMakanan("Sego Tempong");
}
@Override
public void MinumanBuilder() {
kuliner.SetMinuman("Es Degan");
}
@Override
public Kuliner GetKuliner() {
return kuliner;
}
}
class MaduraKuliner implements KulinerBuilder{
private Kuliner kuliner = null;
public MaduraKuliner() {
kuliner = new Kuliner();
}
@Override
public void DaerahBuilder() {
kuliner.SetDaerah("Madura");
}
@Override
public void MakananBuilder() {
kuliner.SetMakanan("Sate");
}
@Override
public void MinumanBuilder() {
kuliner.SetMinuman("Es Teh");
}
@Override
public Kuliner GetKuliner() {
return kuliner;
}
}
C#
using System;
namespace Builder
{
class Program
{
public static void Main(string[] args)
{
KulinerBuilder oseng = new OsengKuliner();
Controller controller = new Controller(oseng);
controller.Build();
Kuliner kuliner = controller.GetKuliner();
Console.WriteLine(kuliner.ToString());
KulinerBuilder madura = new MaduraKuliner();
controller = new Controller(madura);
controller.Build();
kuliner = controller.GetKuliner();
Console.WriteLine(kuliner.ToString());
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
class Controller{
KulinerBuilder kuliner_bulider;
public Controller(KulinerBuilder kuliner_bulider) {
this.kuliner_bulider = kuliner_bulider;
}
public void Build(){
kuliner_bulider.DaerahBuilder();
kuliner_bulider.MakananBuilder();
kuliner_bulider.MinumanBuilder();
}
public Kuliner GetKuliner(){
return kuliner_bulider.GetKuliner();
}
}
class Kuliner{
private string daerah,makanan,minuman;
public string Daerah {
get { return minuman; }
set { minuman = value; }
}
public string Makanan {
get { return makanan; }
set { makanan = value; }
}
public string Minuman {
get { return daerah; }
set { daerah = value; }
}
public string ToString(){
return "Kota "+this.Daerah+" Makanan Khas nya "+this.Makanan+" dan minuman khas nya "+this.Minuman;
}
}
interface KulinerBuilder{
void DaerahBuilder();
void MakananBuilder();
void MinumanBuilder();
Kuliner GetKuliner();
}
class OsengKuliner : KulinerBuilder{
private Kuliner kuliner = null;
public OsengKuliner() {
kuliner = new Kuliner();
}
public void DaerahBuilder() {
kuliner.Daerah = "Banyuwangi";
}
public void MakananBuilder() {
kuliner.Makanan = "Sego Tempong";
}
public void MinumanBuilder() {
kuliner.Minuman = "Es Degan";
}
public Kuliner GetKuliner() {
return kuliner;
}
}
class MaduraKuliner : KulinerBuilder{
private Kuliner kuliner = null;
public MaduraKuliner() {
kuliner = new Kuliner();
}
public void DaerahBuilder() {
kuliner.Daerah = "Madura";
}
public void MakananBuilder() {
kuliner.Makanan = "Sate";
}
public void MinumanBuilder() {
kuliner.Minuman = "Es Teh";
}
public Kuliner GetKuliner() {
return kuliner;
}
}
}
PHP
<?php
class Controller{
private $kuliner_bulider = null;
public function __construct($kuliner_bulider) {
$this->kuliner_bulider = $kuliner_bulider;
}
function Build(){
$this->kuliner_bulider->DaerahBuilder();
$this->kuliner_bulider->MakananBuilder();
$this->kuliner_bulider->MinumanBuilder();
}
function GetKuliner(){
return $this->kuliner_bulider->GetKuliner();
}
}
class Kuliner{
private $daerah,$makanan,$minuman;
function SetDaerah($daerah){
$this->daerah = $daerah;
}
function GetDaerah(){
return $this->daerah;
}
function SetMakanan($makanan){
$this->makanan = $makanan;
}
function GetMakanan(){
return $this->makanan;
}
function SetMinuman($minuman){
$this->minuman = $minuman;
}
function GetMinuman(){
return $this->minuman;
}
function toString(){
return "Kota ".$this->GetDaerah()." Makanan Khas nya ".$this->GetMakanan()." dan minuman khas nya ".$this->GetMinuman();
}
}
interface KulinerBuilder{
public function DaerahBuilder();
public function MakananBuilder();
public function MinumanBuilder();
public function GetKuliner();
}
class OsengKuliner implements KulinerBuilder{
private $kuliner = null;
public function __construct() {
$this->kuliner = new Kuliner();
}
public function DaerahBuilder() {
$this->kuliner->SetDaerah("Banyuwangi");
}
public function MakananBuilder() {
$this->kuliner->SetMakanan("Sego Tempong");
}
public function MinumanBuilder() {
$this->kuliner->SetMinuman("Es Degan");
}
public function PrintText(){
echo "Im Text<br />";
}
public function GetKuliner() {
return $this->kuliner;
}
}
class MaduraKuliner implements KulinerBuilder{
private $kuliner = null;
public function __construct() {
$this->kuliner = new Kuliner();
}
public function DaerahBuilder() {
$this->kuliner->SetDaerah("Madura");
}
public function MakananBuilder() {
$this->kuliner->SetMakanan("Sate");
}
public function MinumanBuilder() {
$this->kuliner->SetMinuman("Es Teh");
}
public function GetKuliner() {
return $this->kuliner;
}
}
$oseng = new OsengKuliner();
$controller = new Controller($oseng);
$controller->Build();
$kuliner = $controller->GetKuliner();
echo $kuliner->toString().'<br /><br />';
$madura = new MaduraKuliner();
$controller = new Controller($madura);
$controller->Build();
$kuliner = $controller->GetKuliner();
echo $kuliner->toString().'<br /><br />';
?>
hemmbb... untuk analisa nya bsa ente pelajari sendiri ya tentunya :D , karena ane lagi males jelasin panjang2 ni... sekian dulu postingan design pattern builder dan implementasi nya di Java, C# dan PHP ini... semoga bermanfaat :)