Harun Özer


Proje veya dijital katalog yaptırmak için
iletişim formu doldurabilirsiniz..

<< Visitor Tasarım Deseni - Visitor Design Pattern | Bridge Tasarım Deseni - Bridge Design Pattern>>

Adapter Tasarım Deseni - Adapter Design Pattern

Yazar harunozer 04 December 2012

Adapter Tasarım Deseni - Adapter Design Pattern Adapter tasarım deseni; structural grubuna ait, uygulamada ki bir yapıya dışarıdaki bir yapıyı uygulamayı düzenleyen bir tasarım desenidir. Uygulanması basittir ve dofactory.com a göre en sık kullanılan tasarım desenlerinden biridir.

Bazı durumlarda zaten var olan başka bir yapıyı uygulamamız içinde ki bir yapıya uyarlayıp kullanmamız gerekebilir. Burada uyarlanacak yapı net kütüphanesi olması gerekmez. Com nesnesi gibi bir yapı da olabilir veya zaten geliştirdiğimiz uygulamadaki başka bir yapı da olabilir. Bu uyarlama işlemini yazacağımız bir Adapter nesnesi ile sağlayabiliriz. Adapter tasarım deseninin uml şeması aşağıdadır.

adapter design pattern uml

Uml diyagramında ki Target uygulamada ki yapıdır. Adaptee ise bu yapıya uyarlanacak nesnedir. Adapter sınıfı ise içinde Adaptee nesnesini barındırarak bu yapıdaki eylem veya özellikleri Adaptee nesnesi üzerinden sağlayacak nesnedir. Basit bir uygulama yaparak adapter tasarım desenini daha iyi anlamaya çalışalım.

Diyelim ki uygulamamızda IO işlemleri için bir yapımız var. IIO arayüzünü uygulayan sınıflar üzerinden IO işlemlerini gerçekleştiriyor olalım. Fakat bir gün IO işlemlerini daha hızlı yapan başka bir kod bulduk ve bu kodu mevcut IO yapımıza adapte etmeye karar verdik. Tek yapmamız gereken bir IIO arayüzünden türeyen ve içinde adapte edeceğimiz kütüphaneyi kullanacak olan yeni bir Adapter sınıfı yazmak olacak. Örnek uygulamamızın class diyagramı ve kodları aşağıdadır.

adapter design pattern class diagram

 

//Target
interface IIO
{
    void CreateTextFile(string Path);
    void CreateFolder(string Path);
    void Copy(string Source, string Destination);
}

class NoBufferIO : IIO
{
    public void CreateTextFile(string Path)
    {
        Console.WriteLine("{0} CreateTextFile(NetIOClass)", Path);
    }
    public void CreateFolder(string Path)
    {
        Console.WriteLine("{0} CreateFolder(NetIOClass)", Path);
    }
    public void Copy(string Source, string Destination)
    {
        Console.WriteLine("{0}==>{1} Copy(NetIOClass)", Source, Destination);
    }
}
class BufferIO : IIO
{
    public void CreateTextFile(string Path)
    {
        Console.WriteLine("{0} CreateTextFile(BufferIO)", Path);
    }
    public void CreateFolder(string Path)
    {
        Console.WriteLine("{0} CreateFolder(BufferIO)", Path);
    }
    public void Copy(string Source, string Destination)
    {
        Console.WriteLine("{0}==>{1} Copy(BufferIO)", Source, Destination);
    }
}
//Adapter
class BatchAdapter : IIO
{
    /*
        * Bu sınıfda Adaptee nesnesini üzerinden Target de tanımlı işlemleri gerçekleştirip
        * Adaptee nesnesini Target yapısına uyarlamış oluyoruz.
        *
    */
    private BatchIO Batch;
    public BatchAdapter(BatchIO batch)
    {
        Batch = batch;
    }
    public void CreateTextFile(string Path)
    {
        Batch.DosyaOlustur(Path);
    }
    public void CreateFolder(string Path)
    {
        Batch.KlasorOlustur(Path);
    }
    public void Copy(string Source, string Destination)
    {
        Batch.Kopyala(Source, Destination);
    }
}
//Adaptee
class BatchIO
{
    public void DosyaOlustur(string DosyaYolu)
    {
        Console.WriteLine("{0} BatchIO DosyaOlusturuldu", DosyaYolu);
    }
    public void KlasorOlustur(string DosyaYolu)
    {
        Console.WriteLine("{0} BatchIO KlasorOlusturuldu", DosyaYolu);
    }
    public void Kopyala(string Kaynak, string Hedef)
    {
        Console.WriteLine("{0} ==> {1} BatchIO Kopyalandı.", Kaynak, Hedef);
    }
}
class Program
{
    static void Main(string[] args)
    {
        IIO io = new BatchAdapter(new BatchIO());
        io.CreateFolder(@"c:\a");
        Console.ReadKey();
    }
}
 
Uygulamanın kodlarını aşağıdaki linkten indirebilirsiniz.

AdapterSample.rar

Tam Sayfa
Tags tasarım desenleri,
Kategoriler c#.net, Tasarım Desenleri
İşlemler
Bu Makale 4  Kez Beğenildi.
İsim :    
e-Mail :    
Web Site :  
İmage :  
Güvenlik Kodu :  

Güvenlik Resmi
Resmi Yenile
    
Yorum :  
Tasarım Desenleri ve Mimarileri