Tasarım Desenleri
Nesneye Dayalı Programlamada Sınıf İlişkileri Nasıl Olmalı?
Testçiler sizin düşmanınız değildir. Esas düşman yazılım hatalarıdır!
Davranışsal Tasarım Desenleri

Strateji ( Strategy ) Tasarım Deseni

Bir işlem için farklı yöntemlerin uygulanabilir olduğu durumlarda, bu yöntemi kullanacak olan nesne, hangi yöntemin uygulanacağını seçer. Çünkü bu içerik nesnesi, yöntemleri belirleyen üst sınıfı içerir. Farklı yöntem veya strateji alt sınıfları da, bu üst sınıftan türerler. Bu tasarım deseniyle, yöntemin nasıl uygulanması gerektiği ile ilgili detaylar, bu yöntemi kullanacak nesneden ayrılmış olur. Ayrıca bu tasarım deseninin kullanılmasıyla, kod uzun "if/else" veya "switch" ifadelerinden ayıklanır.

Örnek Uygulama

Örnekte BorçHesaplamaYöntemi sınıfı strateji üst sınıfıdır. Bu sınıf bir borç hesabının nasıl yapılması gerektiği yöntemini belirleyen üst sınıftır. Bu yöntemin detayını içeren ve bu sınıftan türeyen YöntemA ve YöntemB strateji sınıfları bulunmaktadır. BorçVerenKurum sınıfı içerik sınıfı olup, bir tane strateji sınıfını içerir. Bu sınıfın borç hesaplama yöntemini bu sınıf belirler. Müşteri sınıfı da, sistemi sınayan istemci nesnesidir.

/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/



package com.ilkerkonar.td.desen.ornekkodlar.strategy;

/**
* BorçHesaplamaYöntemi.java
*
* Tarih bilgisi : May 24, 2014
*/
public interface BorçHesaplamaYöntemi {

 
void borçHesapla();
}
/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/

package com.ilkerkonar.td.desen.ornekkodlar.strategy;

/**
* YöntemA.java
*
* Tarih bilgisi : May 24, 2014
*/
public class YöntemA implements BorçHesaplamaYöntemi {

 
@Override
 
public void borçHesapla() {
   
System.out.println( "A yöntemiyle borç hesaplandı." );
 
}
}
/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/



package com.ilkerkonar.td.desen.ornekkodlar.strategy;

/**
* YöntemA.java
*
* Tarih bilgisi : May 24, 2014
*/
public class YöntemB implements BorçHesaplamaYöntemi {

 
@Override
 
public void borçHesapla() {
   
System.out.println( "B yöntemiyle borç hesaplandı." );
 
}
}
/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/



package com.ilkerkonar.td.desen.ornekkodlar.strategy;

/**
* BorçVerenKurum.java
*
* Tarih bilgisi : May 24, 2014
*/
public class BorçVerenKurum {

 
private final BorçHesaplamaYöntemi  yöntem;

 
public BorçVerenKurum( final BorçHesaplamaYöntemi yöntem ) {
   
this.yöntem = yöntem;
 
}

 
public void borçHesapla() {
   
yöntem.borçHesapla();
 
}
}
/**
*
@author İlker KONAR, Yazılım Kıdemli Uzmanı.
*
* Tasarım Desenleri Sitesi Kodları. Dikkat: Her hakkı saklıdır.
*/

package com.ilkerkonar.td.desen.ornekkodlar.strategy;

/**
* Müşteri.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Müşteri {

 
public static void main( final String[] args ) {

   
// İki farklı yöntem ile borç veren kurum nesneleri yaratıldı.
   
final BorçVerenKurum kurum1 = new BorçVerenKurum( new YöntemA() );
   
final BorçVerenKurum kurum2 = new BorçVerenKurum( new YöntemB() );

   
// Borç hesaplamaları çalıştırıldı.
   
kurum1.borçHesapla();
    kurum2.borçHesapla
();
 
}
}
A yöntemiyle borç hesaplandı.
B yöntemiyle borç hesaplandı.

Yorumlar

Henüz bu sayfa için bir yorum yapılmamıştır.

Yorum Yaz, Düşüncelerini Paylaş

Not: Zorunlu alanlar yıldız (*) ile belirtilmiştir.

Kişisel Bilgiler

E-posta adresiniz kimse ile paylaşılmayacaktır. Gerekli olduğunda sizinle iletişim sağlamak için kullanılacaktır.

Yorum Alanı
Giriş Kontrol


Tüm java kodları "jdk1.7.0_09" ile derlenmiş ve çalıştırılmıştır.

Tüm hakları saklıdır. ©  "İlker KONAR" | İletişim: bilgi@tasarimdesenleri.com