Design Pattern,  Programming,  Tekno

Facade Pattern “Si Operator”

Operator
Operator

Pernah menelepon suatu nomor yang menggunakan ekstensi? Misalnya menelepon suatu perusahaan. Biasanya pada awal interaksi, ada suara mesin yang meminta untuk memencet nomor ekstensi yang kita dituju atau “tekan 0 untuk bicara dengan operator kami”. Misalkan seseorang ingin bicara dengan Putri Chairina (halah!). Ralat..ralat.. Misalkan seseorang ingin bicara dengan bagian pemasaran namun ia tidak tahu nomor ekstensi bagian pemasaran. Maka orang tersebut pun menekan 0, kemudian ia bicara dengan operator, lalu minta tolong disambungkan ke bagian pemasaran. Operator yang akan meneruskan koneksi orang tersebut ke bagian pemasaran. Penelepon tidak tahu apa yang terjadi. (mungkinkah si operator melihat daftar tulisan, bertanya ke teman operator lain, atau ia sudah hapal?)

Facade
Facade

Seperti itulah filosofi dari Facade Pattern. Facade artinya “tembok luar” atau “muka bangunan”. Orang yang melintas hanya dapat melihat luarnya saja, tanpa mengetahui isi di dalamnya.

Dengan menggunakan facade, detil proses dan kompleksitas sistem disembunyikan dari pengguna. Pengguna hanya perlu mengakses facade untuk dapat memanfaatkan salah satu fungsi dalam sistem.

Contoh facade berikut saya ambil dari allapplabs.

Misalkan ada sebuah toko. Pelanggan ingin mendapatkan suatu barang. Ia tidak tahu dimana letak barang itu. Untungnya pada toko ini dipekerjakan penjaga toko yang sudah hapal letak barang-barang.

public interface Store{
public Goods getGoods();
}//end of interface

/**


FinishedGoodsStore merupakan salah satu jenis barang di toko. Selain ini ada pula PackingMaterialStore dan RawMaterialStore.

*/

public class FinishedGoodsStore implements Store {

public Goods getGoods() {

FinishedGoods finishedGoods = new FinishedGoods();
return finishedGoods;
}

}// end of class


// facade
// kelas yang akan membantu pengguna mengakses sistem
public class StoreKeeper {


public Goods getGoods(String goodsType) {


if (goodsType.equals("Packaging")) {

PackingMaterialStore store = new PackingMaterialStore();
PackingMaterialGoods packingMaterialGoods = (PackingMaterialGoods)store.getGoods();
return packingMaterialGoods;
}

else if (goodsType.equals("Finished")) {

FinishedGoodsStore store = new FinishedGoodsStore();
FinishedGoods finishedGoods = (FinishedGoods)store.getGoods();
return finishedGoods;
}

else {

RawMaterialStore store = new RawMaterialStore();
RawMaterialGoods rawMaterialGoods = (RawMaterialGoods)store.getGoods();
return rawMaterialGoods;
}

}// End of class facade

Cara pengguna untuk mengakses sistem :
new StoreKeeper().getGoods(“Packaging”);

Referensi :

  • http://www.javaworld.com/javaworld/jw-05-2003/jw-0530-designpatterns.html?page=1
  • http://www.allapplabs.com/java_design_patterns/facade_pattern.htm
  • http://sourcemaking.com/design_patterns/facade
  • http://www.informit.com/guides/content.aspx?g=java&seqNum=136
  • http://java.sun.com/blueprints/patterns/SessionFacade.html

0 Comments

  • bijakfajar

    putri masih betah dengan yang beginian yah???
    wkwkwkwk


    putrichairina berkata :
    neverEndingLearning.
    neverEndingSharing.
    neverEndingTeaching.
    Ada yang buka lowongan jadi dosen? (The Bijaksana Institute buka lowongan dosen, Jak?)
    Tapi paling cepat dua tahun lagi. Jadi universitas anda sekalian musti bersabar. Hehe.. 😉

Leave a Reply

Your email address will not be published. Required fields are marked *