Belajar Design Pattern – Singleton Pattern

Apa itu design pattern?

Sebelum mengenal design pattern, saya sering menggunakan berbagai macam teknik pemrograman, menggabungkan berbagai macam kode dari berbagai sumber untuk memecahkan suatu masalah. Hasilnya, aplikasi yang saya buat sangat tidak konsisten, terutama untuk kasus yang sama, saya dan programer lain bias menggunakan teknik OOP yang berbeda. Ketika partner saya resign dari projek, saya sangat kesulitan ketika harus melakukan maintanance aplikasi. Saya melihat banyak redundansi kode dimana-mana. Hanya untuk merubah 1 bagian kode, saya bisa membuka puluhan file di berbagai folder. Ini belum termasuk masalah-masalah yang timbul setelah implementasi.
Dalam job deskripsi saya sekarang, ada tuntutan untuk mengerti tentang design pattern. Dari sinilah saya mulai mengenal dan mempelajari tentang Design pattern.

Dari berbagai sumber di internet, Design pattern merupakan solusi yang digunakan untuk memecahkan suatu masalah yang sering terjadi dalam pembuatan aplikasi. Design pattern bukan merupakan desain akhir yang dapat di gunakan langsung dalam kode, tapi hanya merupakan template atau kerangka yang dapat digunakan dalam berbagai situasi. Solusi yang ditawarkan design pattern pun telah teruji kehandalannya.

Mengenai kategori dari design pattern dan macamnya silahkan googling aja. Disini saya ingin menulis tentang Creational Pattern – Singleton

Apa itu Singleton pattern?

Singleton design pattern adalah salah satu creational pattern yang digunakan untuk memastikan hanya ada satu instance yang aktif untuk digunakan secara bersama. Disini aplikasi hanya butuh satu objek. Meski digunakan atau didefinisikan berkali-kali tapi sumbernya hanya satu saja.

Cara membuatnya

  1. Definisikan semua konstruktor menjadi Protected atau Private. Dengan kata lain disini kita mencegah penggunaan kata New pada waktu membuat objek singleton.
  2. Definisikan sebuah Private Shared field di dalam class singleton
  3. Definisikan Public shared function di class singleton
  4. Tambahkan “Lazy initialisation” di dalam funtion tersebut.
  5. Kita hanya bisa membuat objek class singgleton ini melalui function yang didefinisikan di no.3

Contoh

Public Class SingletonClass

    'step #2
    Private Shared _singleton As SingletonClass

    'step #1 untuk mencegah penggunaan New spt: Dim obj as New SingletonClass
    Protected Sub New()

    End Sub

    'step #3
    Public Shared Function GetInstance() As SingletonClass
        'step #4 lazy initialisation
        If _singleton Is Nothing Then
            _singleton = New SingletonClass
        End If

        Return _singleton
    End Function

    Public Function Writetext() As String
        Return "Text in singleton class"
    End Function
End Class

Penerapannya. Buat projek console

Module Module1
    Sub Main()
        'construktor singgleton adalah protected, sehingga tidak bisa menggunakan "New"
        Dim obj1 As SingletonClass = SingletonClass.GetInstance()
        Dim obj2 As SingletonClass = SingletonClass.GetInstance()

        If (obj1 Is obj2) Then
            Console.WriteLine"Obj1 dan Obj2 adalah objek dengan instance yang sama")
        End If

        Console.ReadKey()
    End Sub
End Module

Saya menggunakan singleton class ini untuk define culture yang digunakan dalam aplikasi. Karena menurut saya, culture ini sifatnya global di aplikasi. Di banyak page dalam satu applikasi culture selalu di define dari satu instance saja.

Happy coding

About these ads

Tentang Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 10 Desember 2012, in Design Pattern and tagged . Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Ikuti

Get every new post delivered to your Inbox.

%d bloggers like this: