SOLID: Dependency Inversion Principle

İlgili yazı için tıklayın.

// HomeController.cs  --> API [HttpGet]
 public void Get()
        {
            Bildirim bildirim = Creator.CreateBildirimInstance();
            bildirim.Yap();
            bildirim.Yap2();
        }

// Bildirim.cs
 
public class Creator
    {
        private Creator()
        {
 
        }
 
        public static Bildirim CreateBildirimInstance()
        {
            return new Bildirim(new SmsBildirim());
        }
    }
 
 
    public class Bildirim
    {
        private IBildirim _bildirim;
 
        public Bildirim(IBildirim bildirim)
        {
            _bildirim = bildirim;
        }
 
        public void Yap()
        {
            _bildirim.Gonder();
 
            Debug.WriteLine("Bildirim yapıldı.");
        }
 
        public void Yap2()
        {
            _bildirim.Gonder();
 
            Debug.WriteLine("Bildirim yapıldı.");
        }
    }
 
    public interface IBildirim
    {
        void Gonder();
    }
 
 
    public class EPostaBildirim : IBildirim
    {
        public void Gonder()
        {
            Debug.WriteLine("E-posta gönderildi.");
        }
    }
 
    public class SmsBildirim : IBildirim
    {
        public void Gonder()
        {
            Debug.WriteLine("SMS gönderildi.");
        }
    }