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

Komut ( Command ) Tasarım Deseni

Bu tasarım deseninde, nesneler bir işlevi ve bu işlev için gerekli değiştirgeleri içerirler. Dışarıdan bu nesneler tetiklenerek bazı işlemler gerçekleştirilir. Bu tasarım deseniyle, işlemi tetikleyecek nesneler ile işlemi yapan nesneler birbirlerinden ayrılmış olur. İşlemi yapacak nesneler birden fazla olabilir ve bunlar koleksiyonlarda saklanabilir. Bu nesnelerin hepsi birden sırayla çalıştırılabilir, böylece istenen fonksiyon, birden fazla işlevin çalışmasıyla gerçekleştirilmiş olur. Yeni işlevler istendiğinde, yeni komut nesneleri de kolayca eklenebilir.

Örnek Uygulama

Lambaya açma/kapatma işlevi verecek düğme sistemi komut tasarım deseniyle örneklenmiştir. Komut, tasarım desenindeki üst sınıftır. Bu arayüz sınıfı gerçekleştirecek, LambaAçmaKomutu ve LambaKapatmaKomut sınıfları bulunmaktadır. Bu komutlar lambaya gerekli komutu verecek komut sınıflarıdır. Bu sınıflar bir de Lamba nesnesini içermektedir. LambaDüğmesi sınıfı ise, komutları çağıracak, çağırıcı sınıftır. Bu yüzden komut sınıflarını içerir. Örnekte bir de bu tasarım desenini sınayacak olan istemci durumundaki Kullanıcı sınıfı vardır.

/**
*
@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.command;

/**
* Komut.java
*
* Tarih bilgisi : May 24, 2014
*/
public interface Komut {

 
void çalıştır();
}
/**
*
@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.command;

/**
* LambaAçmaKomutu.java
*
* Tarih bilgisi : May 24, 2014
*/
public class LambaAçmaKomutu implements Komut {

 
private final Lamba  lamba;

 
public LambaAçmaKomutu( final Lamba lamba ) {
   
this.lamba = lamba;
 
}

 
@Override
 
public void çalıştır() {
   
lamba.aç();
 
}
}
/**
*
@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.command;

/**
* LambaKapatmaKomutu.java
*
* Tarih bilgisi : May 24, 2014
*/
public class LambaKapatmaKomutu implements Komut {

 
private final Lamba  lamba;

 
public LambaKapatmaKomutu( final Lamba lamba ) {
   
this.lamba = lamba;
 
}

 
@Override
 
public void çalıştır() {
   
lamba.kapat();
 
}
}
/**
*
@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.command;

/**
* Lamba.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Lamba {

 
public void () {
   
System.out.println( "Lamba açıldı." );
 
}

 
public void kapat() {
   
System.out.println( "Lamba kapatıldı." );
 
}
}
/**
*
@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.command;

/**
* LambaDüğmesi.java
*
* Tarih bilgisi : May 24, 2014
*/
public class LambaDüğmesi {

 
private final Komut  açmaKomutu;
 
private final Komut  kapatmaKomutu;

 
public LambaDüğmesi( final Komut açmaKomutu, final Komut kapatmaKomutu ) {
   
this.açmaKomutu = açmaKomutu;
   
this.kapatmaKomutu = kapatmaKomutu;
 
}

 
public void lambaAç() {
   
açmaKomutu.çalıştır();
 
}

 
public void lambaKapat() {
   
kapatmaKomutu.çalıştır();
 
}
}
/**
*
@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.command;

/**
* Kullanıcı.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Kullanıcı {

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

   
// Lamba nesnesi oluştur.
   
final Lamba lamba = new Lamba();

   
// Lamba komutlarını oluştur.
   
final LambaAçmaKomutu açKomutu = new LambaAçmaKomutu( lamba );
   
final LambaKapatmaKomutu kapatKomutu = new LambaKapatmaKomutu( lamba );

   
// Lamba düğmesi nesnesini oluştur.
   
final LambaDüğmesi düğme = new LambaDüğmesi( açKomutu, kapatKomutu );

   
// Düğme komutlarını çalıştır.
   
düğme.lambaAç();
    düğme.lambaKapat
();
 
}
}
Lamba açıldı.
Lamba kapatıldı.

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