static void Main(string[] args) { IKrediManager ihtiyacKrediManager = new IhtiyacKrediManager(); //IhtiyacKrediManager ihtiyacKrediManager = new IhtiyacKredimanager(); yazsaydıkta sonuç değişmezdi. İnterface onu implemente eden sınıfın referansını tutabilir. IKrediManager tasitKrediManager = new TasitKrediManager(); //TasitKrediManager tasitKrediManager = new TasitKrediManager(); aynı şey IKrediManager konutKrediManager = new KonutKrediManager(); //KonutKrediManager konutKrediManager = new KonutKrediManager(); ILoggerService databaseLoggerService = new DatabaseLoggerService(); //ilk loglama alternatifi mesela aşağıda bu loglama türünü seçip yazdık ama file loggerı da seçebilirdik bunlar loglama tercihi oldupundan herhangi birini seçiyoruz. ILoggerService fileLoggerService = new FileLoggerService(); //ikinci loglama alternatifi List <ILoggerService> loggers = new List <ILoggerService> { new SmsLoggerService(), new FileLoggerService() }; //Bu işlem yazılımda sürdürülebilirliği sağlar BasvuruManager basvuruManager = new BasvuruManager(); basvuruManager.BasvuruYap(new EsnafKrediManager(), loggers); //loglamayı veritabanına yapıcak hale getirdik. //hangisini seçersek onun hesaplamasını yapar konut deyince konutun çıktısını verir List <IKrediManager> krediler = new List <IKrediManager>() { ihtiyacKrediManager, tasitKrediManager }; //burada ihtiyaçKrediManager gibi kaç tane kredinin hesaplanmasını istiyorsak seçim yapıyoruz. //basvuruManager.KrediOnBilgilendirmesiYap(krediler); }
static void Main(string[] args) { IhtiyacKrediManager ıhtiyacKrediManager = new IhtiyacKrediManager(); TasitKrediManager tasitKrediManager = new TasitKrediManager(); KonutKrediManger konutKrediManger = new KonutKrediManger(); BasvuruManager basvuruManager = new BasvuruManager(); ILoggerService databaseLoggerService = new DataBaseLoggerService(); ILoggerService fileLoggerService = new FileLoggerService(); basvuruManager.BasvuruYap(ıhtiyacKrediManager, databaseLoggerService); List <IKrediManager> krediler = new List <IKrediManager>() { konutKrediManger }; // basvuruManager.KrediOnBilgilendirmesiYap(krediler); }
//SOLID - O: Open Closed Principle // Sisteme yeni bir özellik eklendiğinde sistemin çalışması bozulmaz. //interfaceler de o interface i implemente eden classın referansını tutabiliyor. interface onu implemente eden classın referansını tutabilir. //interface leri birbirlerinin alternatifi static void Main(string[] args) { IKrediManager ihtiyacKrediManager = new IhtiyacKrediManager(); IKrediManager tasitKrediManager = new TasitKrediManager(); IKrediManager konutKrediManager = new KonutKrediManager(); BasvuruManager basvuruManager = new BasvuruManager(); //basvuruManager.BasvuruYap(konutKrediManager, new DatabaseLoggerService()); basvuruManager.BasvuruYap(new EsnafKredisiManager(), new List <ILoggerService>() { new DatabaseLoggerService(), new SmsLoggerService() }); List <IKrediManager> krediler = new List <IKrediManager>() { ihtiyacKrediManager, konutKrediManager }; //basvuruManager.KrediOnBilgilendirmesiYap(krediler); }