Rabu, 05 Januari 2011

0

Strategy Pattern


a.Deskripsi Strategy Pattern
Dalam pemrograman komputer, strategi  pattren adalah desain pattren software tertentu, dimana algoritma dapat dipilih pada saat runtime tergantung pada kondisi, seperti strategi dalam situasi perang. Strategi pattern mendefinisikan keluarga algoritma, merangkum dan membuat dipertukarkan. Membiarkan setiap algoritma bervariasi independen dari klien yang menggunakannya, merangkum masing-masing sebagai obyek, dan membuat mereka saling dipertukarkan.  Strategi  pattren memungkinkan algoritma bervariasi independen dari klien yang menggunakannya. Strategi pattern digunakan untuk membuat perubahan ini tidak mempengaruhi kode lain, sehingga menghindari konsekuensi yang tidak diinginkan untuk kode kita dan menyediakan fleksibilitas yang lebih besar.

Tujuan Strategi Design Pattern adalah untuk mendefinisikan satu set algoritma, encapusulate algoritma ke dalam kelas concrete method , dan membuat mereka saling dipertukarkan kepada pengguna kelas. Ini decouples pengguna sepenuhnya dari pelaksanaan kelas. Strategi Design Pattern dapat dilaksanakan lebih dari satu cara. Hal ini dapat dilakukan dengan Interface atau kelas abstrak (MustInherit dalam VB.NET).  Tapi, intinya adalah bahwa Strategi Design Pattern dapat diimplementasikan dengan antar muka
Berikut class diagram strategi pattern :






a.      Bagaimana menggunakan Strategy Pattern

Bila memiliki beberapa objek yang pada dasarnya sama, dan hanya berbeda dalam perilaku objek, itu adalah ide yang baik untuk memanfaatkan  strategi  pattern, Penggunaan strategi juga menyediakan alternatif bagus untuk subclassing suatu benda untuk mencapai perilaku yang berbeda. Bila subclass objek untuk mengubah perilakunya, namun perilaku yang dijalankan harus statis. Jika ingin mengubah apa yang dilakukan objek, harus membuat sebuah instance baru dari subclass yang berbeda dan mengganti obyek. Semua yang perlu dilakukan adalah strategi beralih objek, dan segera akan mengubah cara berperilaku. Bila memiliki beberapa perilaku bersama-sama dalam satu kelas, sulit untuk memilih di antara mereka tanpa menggunakan pernyataan bersyarat. Jika menggunakan Strategi tidak perlu untuk memeriksa apa-apa, karena apa pun strategi yang saat ini hanya melaksanakan tanpa mengajukan pertanyaan.

a.      Kapan Strategi Pattern digunakan

Penerapan  strategy pattern ini memungkinkan client dapat  menggunakan algoritma tersebut secara bergantian dengan bebas. 
Jika sebuah kelas yang melakukan validasi pada data yang masuk dapat menggunakan pola strategi untuk memilih algoritma validasi berdasarkan jenis data, sumber data, atau faktor diskriminatif lainnya. Faktor-faktor ini tidak diketahui untuk setiap kasus sampai run-time, dan mungkin memerlukan validasi yang berbeda secara radikal harus dilakukan. strategi Validasi, dikemas secara terpisah dari objek validasi, dapat digunakan oleh objek memvalidasi lain di wilayah yang berbeda dari sistem (atau bahkan sistem yang berbeda) tanpa duplikasi kode.
Persyaratan penting dalam bahasa pemrograman adalah kemampuan untuk menyimpan referensi ke beberapa kode dalam struktur data dan mengambilnyaHal ini dapat dicapai dengan mekanisme seperti fungsi asli penunjuk, yang fungsi kelas pertama, kelas atau instance kelas dalam pemrograman berorientasi obyek bahasa, atau mengakses penyimpanan internal implementasi bahasa kode melalui refleksi

d.      Contoh penggunaan pattern
Pada salesorder perbedaan perhitungan pajak antara US dan Canada. Melalui Calctax client bisa secara bebas memilih US atau Canada.

Berikut contoh Source code dalm java


StrategyExample test application
 
class StrategyExample {
 
    public static void main(String[] args) {
 
        Context context;
 
        // Three contexts following different strategies
        context = new Context(new ConcreteStrategyAdd());
        int resultA = context.executeStrategy(3,4);
 
        context = new Context(new ConcreteStrategySubtract());
        int resultB = context.executeStrategy(3,4);
 
        context = new Context(new ConcreteStrategyMultiply());
        int resultC = context.executeStrategy(3,4);
    }
}
 
// The classes that implement a concrete strategy should implement this
 
// The context class uses this to call the concrete strategy
interface Strategy {
    int execute(int a, int b); 
}
 
// Implements the algorithm using the strategy interface
class ConcreteStrategyAdd implements Strategy {
 
    public int execute(int a, int b) {
        System.out.println("Called ConcreteStrategyAdd's execute()");
        return a + b;  // Do an addition with a and b
    }
}

   
   
   
   
   
   
   
   
  
class ConcreteStrategySubtract implements Strategy {     public int execute(int a, int b) {        System.out.println("Called ConcreteStrategySubtract's execute()");        return a - b;  // Do a subtraction with a and b    }} class ConcreteStrategyMultiply implements Strategy {     public int execute(int a, int b) {        System.out.println("Called ConcreteStrategyMultiply's execute()");        return a * b;   // Do a multiplication with a and b    }    } // Configured with a ConcreteStrategy object and maintains a reference to a Strategy objectclass Context {     private Strategy strategy;     // Constructor    public Context(Strategy strategy) {        this.strategy = strategy;    }     public int executeStrategy(int a, int b) {        return strategy.execute(a, b);    }}
 

   
   
   
   
   
   
   
   
  

Berikut merupakan studi kasus yang menerapkan strategi pattern
contoh kasus dimana ada sebuah perusahaan pembuat software permainan (game) yang membuat sebuah game software mengenai automobile. Misalnya nama software tersebut adalah “Super Automobile”, Pertama kali game ini dibuat dengan design sistem yang jika digambarkan dalam bentuk class diagram kurang lebihnya adalah sebagai berikut:







 

 






0 Comments:

Posting Komentar