//Herzaman tek bir nesneyle değil birden fazla nesneyle çalışırsınız. O yüzden buradaki kullanım hatalı desen hatalı. //public void AddCustomer(CustomerManager customerManager) //Hatalı //{ // customerManager.Add(); //} //public void AddEmployee(EmployeeManager employeeManager) //Hatalı //{ // employeeManager.Add(); //} public void Add(IPersonManager personManager) //Parametre olarak interface alır. Buraya IPersonManager'dan implement edilen tüm class'lar gönderilebilir. //Burası IPersonManager kabul ediyor. Oda IPersonManager'dan implement edilen tüm sınıfları kabul eder. //Bu bize yazılımda değişimi sağlar. Yazılımda çok temel prensip yeni özellik eklediğinizde mevcut kodlara dokunulmaz. //CustomerManager ve EmployeeManager varken InternManager ekleyip IPersonManager'dan implement ederiz kendi operasyon kodlarını yazarız (Add, Update). //Fakat ProjectManager için birşey değiştirmemiz gerekmez çünkü IPersonManager kabul ediyor. InternManager'da IPersonManager'dan implement edildiği //için kabul edecektir. //********* Yazılımden büyük problem siz projeyi yazarsınız 3 ay sonra müşterinin yeni taleplerde bulunmasıdır. ********* { personManager.Add(); }
public void Add(IPersonManager personManager) { personManager.Add(); }
public void Add(IPersonManager personManager)//hangisi gelirse o çalışsın { personManager.Add(); }
public void AddPerson(IPersonManager person) { person.Add(); }
public void Add(IPersonManager personManager) // Parametreye dikkat eğer interface olarak verirsek classlar interfaceten implemente olduğu için bu metoda interfaceden implamente olan bütün classları gönderebiliriz. { personManager.Add(); }
public void Add(IPersonManager personManager)//Interface deki add le bbir alakası yok { personManager.Add(); }
public void AddPerson(IPersonManager personManager) { //Main'de parametre olarak new'lediğimiz class'ın add operasyonu çalışacak. personManager.Add(); }