
seen from Italy

seen from Australia

seen from Italy

seen from Australia

seen from Italy

seen from Australia
seen from Australia
seen from Australia
seen from Australia
seen from Australia

seen from Australia

seen from Australia

seen from Italy
seen from United States

seen from Malaysia
seen from United States

seen from Malaysia
seen from Canada

seen from Italy

seen from Italy
Interface Segregation Principle Tutorial with Java Coding Example for Be...
Hello friends, new #video on #interfacesegregationprinciple #solidprinciples with #Java #coding #example is published on #codeonedigest #youtube channel. Learn #isp #interfacesegregation #principle #interface #programming #coding with codeonedigest.
@java #java #awscloud @awscloud @AWSCloudIndia #Cloud #CloudComputing @YouTube #interfacesegregationprinciple #interfacesegregationprinciplesolid #isp #ispprinciple #interfacesegregationprinciple #interface #interfacesegregationjava #solidprinciples #solidprinciplesinterviewquestions #solidprinciplesjavainterviewquestions #solidprinciplesreact #solidprinciplesinandroid #solidprinciplestutorial #solidprinciplesexplained #solidprinciplesjava #singleresponsibilityprinciple #openclosedprinciple #liskovsubstitutionprinciple #interfacesegregationprinciple #dependencyinversionprinciple #objectorientedprogramming #objectorienteddesignandmodelling #objectorienteddesign #objectorienteddesignsoftwareengineering #objectorienteddesigninterviewquestions #objectorienteddesignandanalysis #objectorienteddesigninjava #objectorienteddesignmodel #objectorienteddesignapproach #objectorienteddesignparadigm #objectorienteddesignquestions
Design Principles - Interface Segregation Principle
Bir uygulamanın tasarımı yapılırken birçok alt modülü kapsayan bir modülün nasıl abstract hale getirileceğine dikkat etmek gerekir. Eğer Interface'leri kullanacaksak, yeni özellikler eklerken Interface'in durumu önemlidir. Interface'in içinde farklı modüllerin hepsini kapsayacak kod yazılmışsa ve alt modüller bazı metodları kullanıyor bazılarını kullanmıyorsa, bu tip Interface'lere Fat Interface veya Polluted Interface denir. Interface içindeki metodlar kimi modüle yarıyor kimine yaramıyorsa bu Interface'i bölmekte fayda vardır.
Interface Segregation Prensibine göre alt modüller Interface'i implemente ederken işine yaramayan kısımları tanımlamak zorunda olmamalıdır.
Örnek
Aşağıda ki kod yapısı, Interface Segregation Disiplinine aykırı tasarlanmıştır. Örneğin, şirkette çalışanları yöneten bir Müdür(Manager), bir normal çalışan (Worker) ve birde süper çalışanımız var(SuperWorker). Bu çalışanlar öğlenleri yemek molası veriyorlar. Derken firmaya robotlar geliyor. Robotların yemek molasına ihtiyaçları yok. Ama robot da bir çalışan olduğu için IWorker'ı implemente etmek zorunda. Böyle bir durumda Robotlar içinde yemek molası tanımlamak zorunda kalıyorsunuz ki tamamen lüzumsuz ve yanlış iş. Bundan dolayı ki artık IWorker Interface'i Polluted Interface olmuştur.
// interface segregation principle - bad example interface IWorker { public void work(); public void eat(); } class Worker implements IWorker{ public void work() { // ....working } public void eat() { // ...... eating in launch break } } class SuperWorker implements IWorker{ public void work() { //.... working much more } public void eat() { //.... eating in launch break } } class Manager { IWorker worker; public void setWorker(IWorker w) { worker=w; } public void manage() { worker.work(); } }
Interface Segregation Prensibine göre düzenlenmiş kod da ise, IWorker interface'i mantık çerçevesinde ikiye bölünmüş durumda. Böylece robotlara artık yemek molası tanımlamak zorunda kalınmazken diğer çalışanlar için herşey yolunda.
// interface segregation principle - good example interface IWorker extends Feedable, Workable { } interface IWorkable { public void work(); } interface IFeedable{ public void eat(); } class Worker implements IWorkable, IFeedable{ public void work() { // ....working } public void eat() { //.... eating in launch break } } class Robot implements IWorkable{ public void work() { // ....working } } class SuperWorker implements IWorkable, IFeedable{ public void work() { //.... working much more } public void eat() { //.... eating in launch break } } class Manager { Workable worker; public void setWorker(Workable w) { worker=w; } public void manage() { worker.work(); } }
Sonuç
Eğer mevcut projenizde hali hazırda tanımlanmış Polluted (Fat) Interface'leriniz varsa onları Adapter Pattern kullanarak ayrıştırabilirsiniz.
Diğer tüm prensipler gibi Interface Segregation Prensibini de uygulamak fazladan uğraş ve zaman ister. Hatta kodunuzu karmaşık hale de getirebilir. Ama neticesinde esnek bir yapı elde edersiniz. Bu prensibi uygularken her bir metod için bir Interface yapma yöntemine giderseniz işin içinden çıkamazsınız. En makulu, tecrübeleri ve hissiyatınızı kullanmanızdır. Aman ha, bu prensibe bağlı kalacağım diye gereksiz bir sürü Interface'in içinde boğulmayın.