Esempio n. 1
0
        static void Main(string[] args)
        {
            //RequirenceCreditManager requirenceCreditManager = new RequirenceCreditManager();
            //requirenceCreditManager.Calculate();

            ICreditManager vehicleCreditManager    = new VehicleCreditManager();
            ICreditManager residenceCreditManager  = new ResidenceCreditManager();
            ICreditManager requirenceCreditManager = new RequirenceCreditManager();   //Interface ile requirenceCreditManager da çağrılabiliyor.

            ILoggerService databaseLoggerService = new DatabaseLoggerService();
            ILoggerService fileLoggerService     = new FileLoggerService();
            ILoggerService smsLoggerService      = new SMSLoggerService();

            ApplicationManager applicationManager = new ApplicationManager();

            //applicationManager.TakeApplication(vehicleCreditManager, fileLoggerService);    //Burda hangi tip krediyi girdiğinde onu hesaplayacaktır. ve seçilen türde loglama yapacak
            //applicationManager.TakeApplication(vehicleCreditManager); //Bu durumda istediğimiz kadar yeni kredi tipi ekleyip çıkarabiliriz.

            applicationManager.TakeApplication(new EsnafKredisiManager(), new List <ILoggerService>()
            {
                smsLoggerService, databaseLoggerService
            });                                                                                                                                  //Yeni eklenen esnaf kredisi ve SMS loglama yöntemlerini böyle de newleyebiliriz.

            List <ICreditManager> credits = new List <ICreditManager>()
            {
                requirenceCreditManager, vehicleCreditManager
            };                                                                                                         //kredi karşılaştırması için seçilen krediler listesi {} içine yazılır

            applicationManager.CreditPreInformation(credits);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            // Inheritance ile beraber konuşmamız gereken konulardan biri de Interface'lerdir.

            // Yine bir bankacılık sistemi ve belirli operasyonları konuşalım.


            // 1. Aşağıda ilk olarak nesneler üreteceğiz ve bu nesnelerden metodları çağıracağız.
            PersonalFinanceCreditManager personalFinanceCreditManager = new PersonalFinanceCreditManager();

            personalFinanceCreditManager.Calculate();

            TransportCreditManager transportCreditManager = new TransportCreditManager();

            transportCreditManager.Calculate();

            MorgageCreditManager morgageCreditManager = new MorgageCreditManager();

            morgageCreditManager.Calculate();
            // Yukarıda zaten bir problem yok doğru şekilde sonuç döner.
            // Ama olay aşağıdaki gibi de çalışabiliyor olması.
            ICreditManager personalFinanceCreditManager1 = new PersonalFinanceCreditManager();

            personalFinanceCreditManager1.Calculate();

            ICreditManager transportCreditManager1 = new TransportCreditManager();

            transportCreditManager1.Calculate();

            ICreditManager morgageCreditManager1 = new MorgageCreditManager();

            morgageCreditManager1.Calculate();
            // Demek interface'ler de o interface'yi implemente eden class'ın referans numarasını tutabiliyor.


            ///// 2. Nesneleri teker teker üretip sonrasında metodları teker teker çağırmak mantıklı değildir. Tek bir çatı altında (Manager)
            ///// nesnelerimizi parametre olarak gönderip ilgili metodları çağırırız.
            // Biz kredi hesaplama işlemini yukarıdaki gibi teker teker sınıflar üzerinden yapmayacağız. Bir Manager üzerinden yöneteceğiz.
            ICreditManager personalFinanceCreditManager2 = new PersonalFinanceCreditManager();
            ICreditManager transportCreditManager2       = new TransportCreditManager();
            ICreditManager morgageCreditManager2         = new MorgageCreditManager();
            // Her bir kredi türünden referans oluşturduk.
            // Örneğin banka çalışanının ekranında kredi türünü seçmesi ve seçimden sonra kredinin hesaplanması.
            ApplicationManager applicationManager = new ApplicationManager();

            // Çalışan ihtiyaç kredisini seçti
            applicationManager.MakeAnApplication(personalFinanceCreditManager2);
            // Çalışan taşıt kredisini seçti
            applicationManager.MakeAnApplication(transportCreditManager2);
            // Çalışan konut kredisini seçti
            applicationManager.MakeAnApplication(morgageCreditManager2);

            Console.WriteLine("---------------------------------------");
            List <ICreditManager> credits = new List <ICreditManager>()
            {
                morgageCreditManager2, personalFinanceCreditManager2
            };

            applicationManager.MakeCreditNotification(credits);


            ///// 3. Dependencies injection yaparak birden fazla soyut nesneyi parametre olarak göndeririz.
            /// Aşağıdaki kullanım da doğrudur fakat birden fazla loglama yapabileceğimiz senaryosundan yola çıkarak kodu düzenleriz.
            ILoggerService fileLoggerService = new FileLoggerService();

            applicationManager.MakeAnApplication(morgageCreditManager2, new DatabaseLoggerService()); // böyle de kullanabilirim
            applicationManager.MakeAnApplication(transportCreditManager2, fileLoggerService);         // böyle de


            applicationManager.MakeAnApplication(new ArtisanCreditManager(), new List <ILoggerService> {
                new SMSLoggerService(), new DatabaseLoggerService()
            });
            // Yukarıdaki gibi direk new'leyerek de gönderebilir. Aşağıdaki gibi instance da oluşturabiliriz.
            ICreditManager        artisanCreditManager  = new ArtisanCreditManager();
            ILoggerService        smsLoggerService      = new SMSLoggerService();
            ILoggerService        databaseLoggerService = new DatabaseLoggerService();
            List <ILoggerService> loggers = new List <ILoggerService> {
                smsLoggerService, databaseLoggerService
            };

            applicationManager.MakeAnApplication(artisanCreditManager, loggers);

            List <ILoggerService> loggers1 = new List <ILoggerService> {
                new DatabaseLoggerService(), new SMSLoggerService()
            };

            applicationManager.MakeAnApplication(artisanCreditManager, loggers);
        }