Интерфейсна сегрегация означава, че по-големите интерфейси трябва да бъдат разделени на по-малки. Като правим това, можем да гарантираме, че класовете по изпълнение трябва само да бъдат загрижени за методите, които представляват интерес за тях.
За този пример ще работим заграждение за мечки в зоопарк.
Нека започнем с интерфейс, който дефинира поведението на пазителите на мечки:
Тук в примера методите за хранене на мечка, чистене и милване на домашна мечка са на едно и също място, но милването на възрастна мечка може да не е толкова риятно. И по този начин интерфейсът ни представя много отговорности, това означава че интерфейсът е твърде голям.
Нека оправим това, като разделим големия си интерфейс на три отделни:
public class BearCarer implements BearCleaner, BearFeeder {
public void washTheBear() {
//I think we missed a spot...
}
public void feedTheBear() {
//Tuna Tuesdays...
}
}
public class CrazyPerson implements BearPetter {
public void petTheBear() {
//Good luck with that!
}
}