static void Main(string[] args) { ILoanManager consumerLoanManager = new ConsumerLoanManager(); ILoanManager autoLoanManager = new AutoLoanManager(); ILoanManager mortgageLoanManager = new MortgageLoanManager(); ILoanManager tradesmanLoanManager = new TradesmanLoanManager(); //ILoggerService databaseLoggerService = new DatabaseLoggerService(); //ILoggerService fileLoggerService = new FileLoggerService(); //ILoggerService smsLoggerService = new SmsLoggerService(); List <ILoggerService> loggers = new List <ILoggerService> { new SmsLoggerService(), new DatabaseLoggerService(), new FileLoggerService() }; ApplicationManager applicationManager = new ApplicationManager(); applicationManager.MakeApplication(tradesmanLoanManager, loggers); List <ILoanManager> loans = new List <ILoanManager>() { consumerLoanManager, autoLoanManager }; //applicationManager.MakeCreditPreNotification(loans); }
static void Main(string[] args) { //PersonalFinanceCreditManager personalFinanceCreditManager = new PersonalFinanceCreditManager(); //personalFinanceCreditManager.Calculate(); //TransportCreditManager transportCreditManager = new TransportCreditManager(); //transportCreditManager.Calculate(); //MortageLoanManager mortageLoanManager = new MortageLoanManager(); //mortageLoanManager.Calculate(); // Interface lerde imlemente edildiği Clasın referans numarasını tutar. // Yukarıda ki kullanımda doğru aşağıdaki kullanımda ICreditManager personalFinanceCreditManager = new PersonalFinanceCreditManager(); ICreditManager transportCreditManager = new TransportCreditManager(); ICreditManager mortageLoanManager = new MortageLoanManager(); ILoggerService dataLoggerService = new DatabaseLoggerService(); ILoggerService filLoggerService = new FileLoggerService(); // şimdi çok güzel bir şekilde yapı kurduk istersek kodumuzu hiç değiştirmeden sadece class ekleyip yeni kredi türleri ve loglama işlemi yapabiliriz. // SOLID kurallarının O kısmı bu ICreditManager tradesmanLoanManager = new TradesmanLoanManager(); ILoggerService smsLoggerService = new SmsLoggerService(); // ***** interfaceleri biribirinin alternatifi olan ama kod içerikleri farklı olan içerikler için kullanırız. // projemizde loglama yapmak istiyoruz. Loglama:Kim ne zaman hangi operasyonu çağırdı. // Loglarımızı bir dosyada tutabiliriz // loglarımızı veri tabanında tutabiliriz. // loglarımızı sms olarakta atabiliriz vb şeyler. // İstenebilir hepsi aynı şeyi loglamayı yapıyor ama farklı işlemler yani interface kullanırız. // bizden 1 tanesi bile istense interface kullanmamız lazım ileride değişiklik istediğini düşün // müşterinin interfacesiz yaparsan bütün sistemin gidebilir tekrar uğraşırsın List <ILoggerService> loggerServices = new List <ILoggerService>() { new DatabaseLoggerService(), new SmsLoggerService() }; List <ICreditManager> creditManagers = new List <ICreditManager>() { new PersonalFinanceCreditManager(), new TransportCreditManager() }; // recourseManager.KrediOnBilgilendirmesiYap(creditManagers); RecourseManager recourseManager = new RecourseManager(); recourseManager.BasvuruYap(tradesmanLoanManager, loggerServices); // Senaryomuz şu bir müşteririmiz var bankaya kredi çekmeye gidiyor araba kredisi çekicek bankacı soruyor taşıt kredisimi istersiniz yoksa ihtiyaç kredisimi diye // şimdi tek kredi hesaplama yapabiliyoruz ama burda 2 tane kredi aynı anda istendi bu yüzden aşağıdki işlemi yapıyoruz. // 2 değil 100 de istenebilir 1000 de vb. bu yüzden herşeyi düşünerek yazılması lazım // aşağıdaki mantık bi liste ytanımladık içine Bizim kredilerin babası sayılan ICreditManager ı attık yani istediğimiz bütün kredileri kolaylıkla çağırabiliriz. // sonrada RecourseManagerda yazdığımız fonksiyonumuzu çağırdık bu fonksiyonda da parametre olarak list ICreditManager verdik böylece bütün kredileri çağırabilmemizi sağladık. }
static void Main(string[] args) { //ConsumerLoanManager consumerLoanManager = new ConsumerLoanManager(); //consumerLoanManager.Calculate(); //VehicleLoanManager vehicleLoanManager = new VehicleLoanManager(); //vehicleLoanManager.Calculate(); //MortgageLoanManager mortgageLoanManager = new MortgageLoanManager(); //mortgageLoanManager.Calculate(); //Interfaceler diger classlardaki inherite olabilir. Cunku tum kredi hesaplama yontemlerinde miras almistir. //ILoanBaseManager consumerLoanManager1 = new ConsumerLoanManager(); //consumerLoanManager1.Calculate(); //ILoanBaseManager vehicleLoanManager1 = new VehicleLoanManager(); //vehicleLoanManager1.Calculate(); //ILoanBaseManager mortgageLoanManager1 = new MortgageLoanManager(); //mortgageLoanManager1.Calculate(); ILoanBaseManager consumerLoanManager2 = new ConsumerLoanManager(); ILoanBaseManager vehicleLoanManager2 = new VehicleLoanManager(); ILoanBaseManager mortgageLoanManager2 = new MortgageLoanManager(); ILoanBaseManager tradesmanLoanManager2 = new TradesmanLoanManager(); ILoggerService databaseLoggerService = new DatabaseLoggerService(); ILoggerService fileLoggerService = new FileLoggerService(); ILoggerService smsLoggerService = new SmsLoggerService(); List <ILoggerService> services = new List <ILoggerService>() { databaseLoggerService, smsLoggerService }; CreditApplicationManager creditApplicationManager = new CreditApplicationManager(); //creditApplicationManager.CreditApplication(consumerLoanManager2, databaseLoggerService); creditApplicationManager.CreditApplication(tradesmanLoanManager2, services); List <ILoanBaseManager> loans = new List <ILoanBaseManager>() { consumerLoanManager2, vehicleLoanManager2, mortgageLoanManager2 }; //creditApplicationManager.ProvideCreditPreNotification(loans); //Interfaceleri birbirinin alternatifi olan ama kod icerikleri birbirinden farkli olan durumlar icin kullaniriz. //Bu yaptigimiz ornekte tum krediler hesaplama ortak bir nokta vardir. Ancak kodlari farkli kurallari vardir. //Kredinin turlerine hesaplama turleri degiskenlik gosterir. }
static void Main(string[] args) { ILoanManager personalFinanceLoan = new PersonalFinanceLoan(); ILoanManager vehicleLoanManager = new VehicleLoanManager(); ILoanManager housingLoanManager = new HousingLoanManager(); ILoanManager tradesmanLoanManager = new TradesmanLoanManager(); ILoggerService databaseLoggerService = new DatabaseLoggerService(); //veya 22. satir virgulden sonrasi gibi de yazabilirsin ILoggerService fileLoggerService = new FileLoggerService(); ILoggerService smsLoggerService = new SmsLoggerService(); RecourseManager recourseManager = new RecourseManager(); recourseManager.MakeRecourse(tradesmanLoanManager, smsLoggerService); List <ILoanManager> loans = new List <ILoanManager>() { personalFinanceLoan, vehicleLoanManager }; //recourseManager.PreLoanInfo(loans); }