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

Arabulucu ( Mediator ) Tasarım Deseni

Uygulama büyüdükçe, bir çok sınıfı ve sınıf hiyerarşilerini içerir. Uygulamanın mantık ve veri koldarı bu sınıflara dağıtılır. Uygulamanın çalışabilmesi için bu sınıflar arasında sürekli bir haberleşme vardır. Sınıfların sayısı arttıkça, aralarındaki bağımlılıklar artar, uygulamanın bakımı ve değiştirilmesi zorlaşır. İşte arabulucu tasarım deseni, bu sınıflar arasındaki bağımlılıkları azaltmak ve aralarındaki iletişimi kolaylaştırmak için kullanılır. Bu sınıflar arasında arabuluculuk yapar.

Örnek Uygulama

Örnek uygulamada, istemci durumundaki Kullanıcı nın bilgisayar, televizyon ve radyo olmak üzere 3 adet elektronik aygıtı vardır. Bu istemci, aynı anda yalnızca bir tane aygıtın çalışmasını istiyor. Bu durumda, herhangi bir aygıttan biri çalıştığında diğerlerinin durması gerekmektedir. Örnekte arabulucu sınıf olan Arabulucu nesnesi, kullanıcı ile bu üç aygıt arasındaki haberleşmeyi sağlamaktadır. Böylece kullanıcı ile aygıtlar arasındaki bağımlılık azalmıştır. Ayrıca kullanıcının istediği bir zamanda yalnızca bir tane aygıt çalışması mantığını da bu arabulucu sınıf sağlamaktadı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.mediator;

/**
* ElektronikAygıt.java
*
* Tarih bilgisi : May 24, 2014
*/
public abstract class ElektronikAygıt {

 
protected Arabulucu  arabulucu;

 
public ElektronikAygıt( final Arabulucu arabulucu ) {
   
this.arabulucu = arabulucu;
 
}

 
public abstract void çalıştır();

 
public abstract void durdur();
}
/**
*
@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.mediator;

/**
* Bilgisayar.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Bilgisayar extends ElektronikAygıt {

 
public Bilgisayar( final Arabulucu arabulucu ) {
   
super( arabulucu );
    arabulucu.bilgisayarEkle
( this );
 
}

 
@Override
 
public void çalıştır() {
   
System.out.println( "Bilgisayar çalıştı." );
    arabulucu.bilgisayarÇalıştır
();
 
}

 
@Override
 
public void durdur() {
   
System.out.println( "Bilgisayar durdu." );
 
}
}
/**
*
@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.mediator;

/**
* Televizyon.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Televizyon extends ElektronikAygıt {

 
public Televizyon( final Arabulucu arabulucu ) {
   
super( arabulucu );
    arabulucu.televizyonEkle
( this );
 
}

 
@Override
 
public void çalıştır() {
   
System.out.println( "Televizyon çalıştı." );
    arabulucu.televizyonÇalıştır
();
 
}

 
@Override
 
public void durdur() {
   
System.out.println( "Televizyon durdu." );
 
}
}
/**
*
@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.mediator;

/**
* Radyo.java
*
* Tarih bilgisi : May 24, 2014
*/
public class Radyo extends ElektronikAygıt {

 
public Radyo( final Arabulucu arabulucu ) {
   
super( arabulucu );
    arabulucu.radyoEkle
( this );
 
}

 
@Override
 
public void çalıştır() {
   
System.out.println( "Radyo çalıştı." );
    arabulucu.radyoÇalıştır
();
 
}

 
@Override
 
public void durdur() {
   
System.out.println( "Radyo durdu." );
 
}
}
/**
*
@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.mediator;

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

 
private Bilgisayar  bilgisayar;
 
private Televizyon  televizyon;
 
private Radyo    radyo;

 
public void bilgisayarEkle( final Bilgisayar bilgisayar ) {
   
this.bilgisayar = bilgisayar;
 
}

 
public void radyoEkle( final Radyo radyo ) {
   
this.radyo = radyo;
 
}

 
public void televizyonEkle( final Televizyon televizyon ) {
   
this.televizyon = televizyon;
 
}

 
public void bilgisayarÇalıştır() {
   
// Bilgisayar çalıştığında, diğer aygıtların durması isteniyor.
   
televizyon.durdur();
    radyo.durdur
();
 
}

 
public void radyoÇalıştır() {
   
// Radyo çalıştığında, diğer aygıtların durması isteniyor.
   
bilgisayar.durdur();
    televizyon.durdur
();
 
}

 
public void televizyonÇalıştır() {
   
// Televizyon çalıştığında, diğer aygıtların durması isteniyor.
   
bilgisayar.durdur();
    radyo.durdur
();
 
}
}
/**
*
@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.mediator;

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

 
public static void main( final String[] args ) {
   
// Arabulu sınıf yaratılır.
   
final Arabulucu arabulucu = new Arabulucu();

   
// Arabulucu sınıfı içeren nesneler yaratılıyor ve bir
    // dizine ekleniyor. Bu nesneler arasındaki haberleşmeyi
    // ortak Arabulucu sınıf sağlayacak.
   
final ElektronikAygıt[] aygıtlar = new ElektronikAygıt[ 3 ];
    aygıtlar
[ 0 ] = new Bilgisayar( arabulucu );
    aygıtlar
[ 1 ] = new Televizyon( arabulucu );
    aygıtlar
[ 2 ] = new Radyo( arabulucu );

   
// Her bir aygıtı çalıştır.
   
for ( final ElektronikAygıt aygıt : aygıtlar ) {
     
aygıt.çalıştır();
   
}
  }
}
Bilgisayar çalıştı.
Televizyon durdu.
Radyo durdu.
Televizyon çalıştı.
Bilgisayar durdu.
Radyo durdu.
Radyo çalıştı.
Bilgisayar durdu.
Televizyon durdu.

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