Dependency Injection

Dependency Injection

Yazıma öncelikle "Loose Coupling" terimi ile başlamak istiyorum. Gevşek bağlılık veya zayıf bağlılık diye türkçeye geçirebileceğimiz bir tabirdir. Yazılım geliştirme sürecinde oldukça önemli bir yeri vardır çünkü yazılım geliştirme sürecinde en çok sıkıntı çekilen noktalardan biri ilerki süreçlerde yazılım üzerinde çeşitli değişiklikler yapmaktır. Bu size veya müşteri isteğine bağlı olarak çeşitlilik gösterebilmektedir. Buyüzden yazılımımızın yapıları birbirinden ne kadar bağımsız olursa ilerki aşamalarda bir modül değiştirdiğimizde başka bir modülü değiştirmek zorunda kalmayız.Mümkün mertebe ileride olacak değişiklikleri öngörüp buna uygun kod yazmamız gerekmektedir.

 

Hemen bir örnek yapalım konu hakkında yazmaktansa daha iyi olacaktır.

namespace DependencyInjection
{
    public interface ILogger
    {
        void Log(string text);
    } 
   public class DBLogger:ILogger
    {
        public void Log(string message)
        {
            Console.WriteLine("{0} DB'ye Loglandı",message);
        }
    }
    public class EmailLogger : ILogger
    {
        public void Log(string message)
        {
            Console.WriteLine("{0} Log email ile gönderildi.",message);
        }
    }
    public class FileLogger : ILogger
    {
        public void Log(string message)
        {
            Console.WriteLine("{0} Log dosyasına kaydedildi.", message);
        }
    }

 

 

Logger Interface'imizi yazdık. Bunu kullanacak bir manager sınıfımızı oluşturalım 

public class LogManager
    {
        private ILogger _logger;
        public ILogger Logger
        {
            set { _logger = value; }
        }
        public LogManager(ILogger Logger)
        {
            this._logger = Logger;
        }
        public void AssignLog(ILogger Logger)
        {
            this._logger = Logger;
        }
        public void Log(string message)
        {
            _logger.Log(message);
        }
    }

 

Burada gördüğünüz üzere 3 farklı kullanım çeşidinide ekledim. Şimdi bu üç yönteminde kullanımını görelim.

static void Main(string[] Args)
    {
        LogManager logmanager = new LogManager(new EmailLogger());
        logmanager.Log("ilk yöntem");

        logmanager.Logger = new DBLogger();
        logmanager.Log("ikinci yöntem");

        logmanager.AssignLog(new FileLogger());
        logmanager.Log("üçüncü yöntem");
    }

Evet arkadaşlar işlemlerimiz bukadar.Projelerinizin sonradan genişleme veya değişmesi gibi beklentileriniz varsa çekinmeden dependency injection'ı kullanabilirsiniz.

Tarih:
Hit: 6406
Yazar: FCN

Taglar: c# oop dependency injection loose coupling


Yorumlar


Yorum yapabilmek için üye girişi yapmalısınız.

Yorumlar

DuPi tarafından yazıldı. Tarih: 28/Tem/16 07:13
Overloading konusunu anımsattı