Dependency Inversion Prensibi

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda SOLID prensiplerinden olan dependency inversion prensibini anlatacağım. Hadi başlayalım !
Table of Contents
Dependency Inversion Prensibi Nedir ?
Dependency Inversion prensibi, SOLID prensipleri arasında yer alan ve yazılım tasarımında oldukça önemli bir yere sahip olan bir prensiptir. Bu prensip, yazılım bileşenleri arasındaki bağımlılıkların tersine çevrilmesini öngörür. Yani, bir bileşenin başka bir bileşene doğrudan bağımlı olması yerine, aralarına bir arayüz yerleştirilerek, daha yüksek seviyeli bileşenlerin daha düşük seviyeli bileşenlerden bağımsız olmasını sağlar.
Bu prensibin uygulanması sayesinde, kodun daha modüler, yeniden kullanılabilir ve test edilebilir olmasını sağlanabilir. Ayrıca, kodun bakımı daha kolay hale gelir ve değişikliklerin yapılması daha az etki yaratır.
C# İle Uygulanması
Aşağıda, Dependency Inversion prensibinin nasıl uygulanabileceği ile ilgili bir C# kod örneği verilmiştir:
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message)
{
//Log message to file
}
}
public class DatabaseLogger : ILogger
{
public void Log(string message)
{
//Log message to database
}
}
public class CustomerService
{
private readonly ILogger _logger;
public CustomerService(ILogger logger)
{
_logger = logger;
}
public void AddCustomer(Customer customer)
{
//Add customer to database
_logger.Log("Customer added: " + customer.Name);
}
}
public class Program
{
static void Main(string[] args)
{
ILogger logger = new FileLogger();
//ILogger logger = new DatabaseLogger();
CustomerService customerService = new CustomerService(logger);
Customer customer = new Customer { Name = "John Smith" };
customerService.AddCustomer(customer);
}
}
Kod Açıklamaları
Yukarıdaki örnekte, ILogger arayüzü, ILogger arayüzünden türetilen FileLogger ve DatabaseLogger sınıfları ile kullanılmıştır. CustomerService sınıfı, ILogger arayüzünden türetilen bir nesne ile çalışır. Bu nesne, uygulama çalıştığında ILogger arayüzünü uygulayan FileLogger veya DatabaseLogger sınıflarından biriyle değiştirilebilir. Bu sayede, CustomerService sınıfı, ILogger arayüzünü uygulayan herhangi bir sınıfla kullanılabilir hale gelir.
Dependency Inversion prensibi, yazılım tasarımında önemli bir yere sahip olmasına rağmen, doğru bir şekilde uygulanmadığı takdirde, gereksiz karmaşıklığa ve daha fazla iş yüküne neden olabilir. Bu nedenle, her zaman bu prensibin en iyi uygulama yöntemlerine uygun olarak kullanılması önemlidir.
Evet dependency inversion prensibi ve C# ile uygulanması bu şekilde idi. Tüm C# yazılarımıza buraya, diğer SOLID prensipleri yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.