Design Pattern : Return Strategy

Strategy Design Pattern

DesignPattern

Mulai semester ini, saya akan sedikit berbagi pengetahuan tentang design pattern, sebuah teknik dalam Software Engineering yang memungkinkan source code yang dibangun menjadi modular. Teknik ini menjadikan software dapat dimaintain secara lebih mudah dan terorganisir, walaupun dengan kompleksitas yang tinggi sekalipun. Design Pattern menjadi sesuatu yang harus diketahui bagi teman-teman yang bercita-cita menjadi seorang Analyst maupun Software Architect. Dengan menggunakan Design Pattern, seorang Software Architect dapat merencanakan dan merancang arsitektur software sehingga lebih tertata. Design Pattern memiliki banyak hubungan dengan OOP (Object Oriented Programming). Bila diibaratkan kita sedang mempelajari bahasa asing, OOP merupakan tata bahasanya, sedangkan Design Pattern merupakan teknik conversation sehari-hari. Design pattern ini memiliki variasi sekitar 23 jenis, cukup banyak bukan. Dapat disimpulkan Design Pattern menjadi faktor penting dalam pengembangan software. Sebagai media belajar, teman-teman bisa menggunakan buku Design Patterns : Elements of Reusable Object Oriented Software, karya Erich Gamma.

Oke, saya akan memulainya dengan sebuah teknik yang memungkinkan instance dari sebuah abstrak class dapat digunakan dengan optimal secara bersamaan. Design Pattern ini dinamakan Strategy. Ada beberapa alasan yang melandasi adanya teknik ini, antara lain sebagai berikut :

  • Clients that need linebreaking get more complex if they include the linebreaking code. That makes clients bigger and harder to maintain, especially if they support multiple linebreaking algorithms.
  • Different algorithms will be appropriate at different times. We don’t want to support multiple linebreaking algorithms if we don’t use them all.
  • It’s difficult to add new new algorithms and vary existing ones when linebreaking is and integral part of a client.

Cara penanganannya adalah dengan mendefinisikan sebuah class yang meng-enkapsulasi code algoritma yang berbeda. Algoritma yang dienkapsulasi dinamakan strategy. Konsep Design Pattern Strategy dapat diilustrasikan dengan class diagram berikut.

Strategy Design Pattern
Strategy Design Pattern

Composition class merupakan sebuah class yang menjadikan class abstrak Compositor sebagai anggotanya (agregasi). Class Abstrak Compositor memiliki sebuah method abstrak Compose, di mana method ini direalisasikan oleh Class SimpleCompositor, TeXCompositor, dan Array Compositor. Class-class yang meng-extend class Compose memiliki method Compose yang berbeda algoritmanya satu sama lain. Strategy Pattern dapat digunakan dalam kondisi berikut.

  • Many related classes differ only in their behavior. Strategies provide a way to configure a class with one of many behaviors.
  • You need different variants of an algorithm. For example, you might define algorithms reflecting different space/time trade-offs. Strategies can be used when these variants are implemented as a classhierarchy of algorithms.
  • An algorithms uses data that clients shouldn’s know about. Use the Strategy pattern to avoid exposing complex, algorithm-specific data structures.
  • A class defines many behaviors, and these appear as multiple conditional statements in its operations. Instead of many conditionals, move related conditional branches into their own Strategy class.

Salah satu penerapan Strategy pattern ini adalah pada kasus instance class Bentuk, Kotak, Lingkaran, Garis yang memiliki algoritma berbeda dalam penggambarannya. Ketiga class ini merupakan extend dari sebuah class Abstrak. Untuk memudahkan ilustrasi, saya menggunakan Clas Diagram Tool Visual Studio 2010.

Example Class Diagram Strategy Pattern
Example Class Diagram Strategy Pattern

Bisa dilihat bahwa ketiga class Kotak, Lingkaran dan Garis memiliki method yang sama, Draw. Realisasi method Draw ini memiliki perbedaan antara 1 class dengan class yang lain. Pada class Kotak, variabel yang dibutuhkan dalam eksekusi method Draw adalah h,w,x,y. Sementara eksekusi method Draw di Lingkaran yaitu r,x,y dan Garis adalah x1,y1,x2,y2. Target dari aplikasi ini adalah melakukan penggambaran kotak, lingkaran, garis pada sebuah form. Strategy pattern sangat berguna untuk memudahkan pendeteksian kesalahan karena 1 class dengan class yang lain dibuat modular.

Untuk memudahkan dalam memahami Strategy pattern ini, telah saya sediakan project sample yang bisa di download di https://copy.com/YviiSzgureic. Semoga bermanfaat 🙂

7 tanggapan untuk “Design Pattern : Return Strategy”

  1. waah ini papl pak suhadi yah… sering” share gan 😀

    1. iya man, biar nggak gampang lupa mending ditulis man 😀

  2. […] digunakan dalam Design Pattern. Berbeda dengan Strategy Pattern yang saya jelaskan di postingan sebelumnya, Observer Pattern ini digunakan dalam kondisi MVC di mana sebuah model dapat ditampilkan secara […]

  3. […] akan membagi wawasan tentang Decorator Pattern. Artikel ini merupakan artikel ke-3 setelah artikel pertama dan kedua membahas tentang Strategy Pattern dan Observer Pattern. Jika kedua pattern awal […]

  4. […] Sumber : https://fadlikadn.wordpress.com/2013/09/27/design-pattern-return-strategy/ […]

  5. […] digunakan dalam Design Pattern. Berbeda dengan Strategy Pattern yang saya jelaskan di postingan sebelumnya, Observer Pattern ini digunakan dalam kondisi MVC di mana sebuah model dapat ditampilkan secara […]

Tinggalkan Balasan ke firman Batalkan balasan