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!
Yapısal Tasarım Desenleri

Köprü ( Bridge ) Tasarım Deseni

Bu tasarım deseni, soyutlama ile gerçekleştirmeyi ayrı sınıf hiyerarşisi içinde ayırmak için kullanılır. Sınıflara daha fazla bir soyutlama ve genişleme imkanı tanır. Desende hem soyutlama kısmı, hem de gerçekleştirme kısmında bir üst sınıfı bulunur. Bu üst sınıfların altındaysa belirli bir sınıf hiyerarşisi bulunur. Bu iki hiyerarşi de birbirlerine bağlıdır. İşte desen, iki kısım arasında köprü gibi bir yapı olarak duran bu bağdan ismini almıştır. Soyutlama kısmında, sistemin daha üst düzey işlemleri bulunur. Gerçekleştirme kısmında ise, bu soyutlama kısmındaki üst düzey işlemlere bağlı daha basit ve bu üst düzey işlemleri detaylandıran işlemler bulunur. Sistemin gerçekleştirme ve soyutlama kısmında kalıcı bir bağlılık istemiyorsak, bu iki kısmında birbirlerinden bağımsız olarak alt sınıflarla genişlemesine imkan vermek istiyorsak, gerçekleştirme kısmını istemciden tamamen saklamak istiyorsak bu deseni kullanabiliriz.

Örnek Uygulama

Aşağıdaki köprü tasarım deseni örneğinde, soyutlama kısmında bir şekil hiyerarşisi, gerçekleştirme kısmında ise bu şekilleri çizmeye yarayan kalıp hiyerarşisi bulunmaktadır. Bu iki hiyerarşi birbirlerine şekil kısmının, kalıp kısmını sahiplenmesi ile bağlanmaktadır. Şekil kısmındaki çizim detayları kalıp sınıflarında yer almaktadır. Örnekte de görüldüğü gibi soyutlama ve gerçekleştirme birbirlerinden ayrılmıştır. Gerçekleştirme kısmı olan kalıp kısmında detay daha fazladı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.bridge;

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

 
protected ÇizimKalıbı  kalıp;
 
private final String  isim;

 
public Şekil( final ÇizimKalıbı kalıp, final String isim ) {
   
this.kalıp = kalıp;
   
this.isim = isim;
 
}

 
public void çiz() {
   
System.out.println( isim + " Çiziliyor..." );
 
}
}
/**
*
@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.bridge;

/**
* Üçgen.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Üçgen extends Şekil {

 
public Üçgen( final ÇizimKalıbı kalıp ) {
   
super( kalıp, "Üçgen" );
 
}

 
@Override
 
public void çiz() {

   
super.çiz();

    kalıp.çizgiÇiz
();
    kalıp.çizgiÇiz
();
    kalıp.çizgiÇiz
();
 
}
}
/**
*
@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.bridge;

/**
* Dikdörtgen.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Dikdörtgen extends Şekil {

 
public Dikdörtgen( final ÇizimKalıbı kalıp ) {
   
super( kalıp, "Dikdörtgen" );
 
}

 
@Override
 
public void çiz() {

   
super.çiz();

    kalıp.çizgiÇiz
();
    kalıp.çizgiÇiz
();
    kalıp.çizgiÇiz
();
    kalıp.çizgiÇiz
();
 
}
}
/**
*
@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.bridge;

/**
* Çember.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Çember extends Şekil {

 
public Çember( final ÇizimKalıbı kalıp ) {
   
super( kalıp, "Çember" );
 
}

 
@Override
 
public void çiz() {

   
super.çiz();

    kalıp.çemberÇiz
();
 
}
}
/**
*
@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.bridge;

/**
* ÇizimKalıbı.java
*
* Tarih bilgisi : May 24, 2014
*/
public interface ÇizimKalıbı {

 
void çizgiÇiz();

 
void çemberÇiz();
}
/**
*
@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.bridge;

/**
* Kalıp1.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Kalıp1 implements ÇizimKalıbı {

 
@Override
 
public void çemberÇiz() {
   
System.out.println( "Kalıp 1 ile çember çizildi." );
 
}

 
@Override
 
public void çizgiÇiz() {
   
System.out.println( "Kalıp 1 ile çizgi çizildi." );
 
}
}
/**
*
@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.bridge;

/**
* Kalıp2.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Kalıp2 implements ÇizimKalıbı {

 
@Override
 
public void çemberÇiz() {
   
System.out.println( "Kalıp 2 ile çember çizildi." );
 
}

 
@Override
 
public void çizgiÇiz() {
   
System.out.println( "Kalıp 2 ile çizgi çizildi." );
 
}
}
/**
*
@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.bridge;

/**
* ÇizimTahtası.java
*
* Tarih bilgisi : May 24, 2014
*/
public class ÇizimTahtası {

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

   
// Şekil dizisi.
   
final Şekil[] şekiller = new Şekil[ 3 ];

   
// Şekil nesnelerini oluştur.
   
şekiller[ 0 ] = new Dikdörtgen( new Kalıp2() );
    şekiller
[ 1 ] = new Çember( new Kalıp1() );
    şekiller
[ 2 ] = new Üçgen( new Kalıp2() );

   
// Tüm şekilleri çiz.
   
for ( final Şekil şekil : şekiller ) {
     
şekil.çiz();
   
}
  }
}
Dikdörtgen Çiziliyor...
Kalıp 2 ile çizgi çizildi.
Kalıp 2 ile çizgi çizildi.
Kalıp 2 ile çizgi çizildi.
Kalıp 2 ile çizgi çizildi.
Çember Çiziliyor...
Kalıp 1 ile çember çizildi.
Üçgen Çiziliyor...
Kalıp 2 ile çizgi çizildi.
Kalıp 2 ile çizgi çizildi.
Kalıp 2 ile çizgi çizildi.

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