Clear        


                
                    using _08_InterfaceSegregation._1_Arac;
using _08_InterfaceSegregation._2_Fabrika.DogruKullanim;
using _08_InterfaceSegregation._2_Fabrika.YanlisKullanim;

namespace _08_InterfaceSegregation
{
    internal class Program
    {
        // Interface Segregation yazılım geliştirme presinplerinden SOLID prensiplerinin I harfine karşılık gelir.
        // Bir interface oluşturup içerisine pek çok method tanımı yapıp bu interface'i implemente eden
        // bir veya daha fazla class'ta methodlardan bir veya daha fazlası implemente edilemiyorsa (içi boş kalıyorsa)
        // bu Interface Segregation prensibine aykırıdır ve asla yapılmamalıdır.
        // Bir sınıf bir interface'i implemente ettiğinde interface içerisindeki bütün özellik veya methodlar sınıfta
        // implemente edilmelidir (methodların içerisindeki kodlar yazılmalıdır).



        static void Main(string[] args)
        {
            #region Fabrika
            // Yanlış Kullanım Demo
            YanlisKullanimDemo.Calistir();

            Console.WriteLine();

            // Doğru Kullanım Demo
            DogruKullanimDemo.Calistir();

            Console.WriteLine();
            #endregion



            #region Araç
            AracDemo.Calistir();
            #endregion
        }
    }
}