"Enter"a basıp içeriğe geçin

C# Adapter Design Pattern Kullanımı

Bu yazımda adapter pattern design neden kullanılır, adapter pattern design nasıl kullanılır bu başlıklardan bahsedeceğim.

Adapter pattern design, farklı sistemleri(dll gibi) kendi sistemimize dahil ettiğimizde, kendi sistemimizin yapısının bozulmaması açısından farklı sistemlerin sanki bizim sistemimizmiş gibi davranmasını sağlayan pattern’dir.

Diğer bir açıklama ise;

Bir uygulamayı geliştirirken, uygulama için gereken tüm ihtiyacları kendimiz karşılayamayabiliriz. Bu durumda üçüncü parti bileşenlerden faydalanmak gerekir. Bu bileşenin arayüzü, bizim sınıflarımızın arayüzlerinden farklı olabilir. Bu durumda bileşeni, bağımlılık oluşturmamak açısından, kendi arayüzümüzle uyumlu hale getirmeliyiz.
Bir servis referans edildiğinde, o servis direk methodun içinde çağrılırsa bağımlılık meydana gelir.

 

Örneğin kullanılan servisin yayında olmadığı varsayılırsa, method içerisinde tekrar düzenleme yapılması gerekmektedir. Bu durumda bağımlılığı ortadan kaldırmak için adapter design pattern kullanılır.
Aşağıda adapter design kullanımına bir örnek verilmiştir.

using System;

namespace AdapterPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            var yoneticiSinif = new YoneticiSinif(new NetLoggerAdapter(), "NetLogger");
            yoneticiSinif.Kaydet();

            //var yoneticiSinif = new YoneticiSinif(new XLogger(), "XLogger");
            //yoneticiSinif.Kaydet();
            Console.ReadLine();
        }
    }

    public class YoneticiSinif
    {
        private readonly ILogger _logger;
        private readonly string _mesaj;

        public YoneticiSinif(ILogger logger, string mesaj)
        {
            _logger = logger;
            _mesaj = mesaj;
        }

        public void Kaydet()
        {
            _logger.Log(_mesaj);
        }
    }

    public interface ILogger
    {
        void Log(string mesaj);
    }

    public class XLogger : ILogger
    {
        public void Log(string mesaj)
        {
            Console.WriteLine("XLog Kaydedildi!");
        }
    }

    public class NetLogger
    {
        public void LogMessage(string mesaj)
        {
            Console.WriteLine("LognetMessage" + mesaj);
        }
    }

    public class NetLoggerAdapter : ILogger
    {
        public void Log(string mesaj)
        {
            NetLogger logNet = new NetLogger();
            logNet.LogMessage(mesaj);
        }
    }
}

Burada NetLogger sınıfının bir dll olduğunu, üzerinde değişiklik yapamadığımızı varsayalım. Bu durumda bir adapter yazarak arayüzümüze uygun hale getiriyoruz.

Yazıyı Paylaşmak İster misin?
Share on Facebook
Facebook
Pin on Pinterest
Pinterest
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Share on Tumblr
Tumblr
Share on Reddit
Reddit
    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir