Factory Method Pattern

29Nov12

Akhirnya Ngisi Blog lagi setelah lama gak posting. Kali ini mau posting tentang Design Pattern.. Design Pattern yang mau ditulis mengenai Factory Method Pattern. Design Pattern ini bisa digunakan oleh semua bahasa pemrograman yang bisa Object Oriented..

Mengapa Menggunakan Factory Method Pattern?

Pattern ini digunakan jika memiliki object yang akan digunakan atau instansiasi berdasarkan kondisi tertentu.
Contohnya :
Sebuah “Pabrik Mobil” yang memproduksi tipe mobil yang berbeda setiap harinya. Misalnya hari ini ingin memproduksi tipe mobil A, maka pabrik akan memberi perintah kepada sistem untuk produksi mobil A, dan hari berikutnya memproduksi mobil dengan tipe lainnya.

Seperti APA bentuk Factory Pattern?

Sebuah Class/Inteface bertugas sebagai dispatcher untuk mengarahkan object yang akan dijalankan. Object sama seperti tipe mobil analogi diatas. Contoh class/interface sebagai dispatcher di gambar diatas adalah interface Factory Element.

Bagaimana dengan method yang akan digunakan?
Semua Tipe Object yang di pilih memiliki method yang sama. Oleh karena itu, semua tipe object yakni Pet, Spoon, dan Pan mengimplement AbstactUtensil.

Kalau gak ada Implementasinya bingung juga ya.. Saya sudah menyiapkan contoh program sederhana yang menggunakan design pattern ini. Program ini hanya menghasilkan output berupa tipe object yang dipilih di Main Program.

  •  GeneralMethod Abstract Class Abstact Class ini digunakan untuk list method yang dimiliki oleh semua object.
    public abstract class GeneralMethod
    {
    //get type of object
        public abstract string ClassName();
    }
    
  • MobilA ClassClass ini salah satu tipe object yang akan digunakan atau instansiasi oleh dispather.
    public class MobilA : GeneralMethod
    {
      public override string ClassName()
      {
        return this.GetType().ToString();
      }
    }
    
  • MobilB Class
    Sama seperti MobilB class.

    public class MobilB : GeneralMethod
    {
        public override string ClassName()
        {
          return this.GetType().ToString();
        }
    }
    
  • Factory ClassMerupakan class yang menjadi dispatcher.
    public class Factory
    {
            //Constructor ini dibuat private agar class tidak bisa diinstaniasi..
            //Class ini dibuat sebagai Helper Class jadi tidak perlu diinstansiasi..
          private Factory() { }
    
          public static GeneralMethod GetClass(int id)
          {
            if (id == 1)
               return new MobilA();
            else if (id == 2)
               return new MobilB();
            else
               return null;
          }
    }
    
  • Main Class
    Class yang akan menjalankan program.
      public class  Program
      {
          public static void Main(string[] args)
          {
              /*ini alasan kenapa perlu pakai factory method design pattern..
              Si aplikasi akan instansiasi tipe Mobil berdasarkan inputan di parameter method getclass().*/

            GeneralMethod obj = null;

           //Jika program mau menggunakan object mobilA
           obj= Factory.GetClass(1);
           Console.WriteLine(string.Format("If you choose 1, you instantiate class {0}", obj.ClassName()));

            //Jika program mau menggunakan object mobilB
              obj = Factory.GetClass(2);
              Console.WriteLine(string.Format("If you choose 2, you instantiate class {0}", obj.ClassName()));

              Console.ReadKey();
           }
       }
       
Advertisements


No Responses Yet to “Factory Method Pattern”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: