Противоположность принципу разделения интерфейса

Сегодня в интервью меня спросили, что такое принцип разделения интерфейса и какой случай или принцип противоположен этому.

Провайдер мне понятен, но я не знаю второй части вопроса, что противоположно провайдеру по принципу?


person fgonzalez    schedule 18.03.2015    source источник
comment
Я полагаю, что объект бога   -  person Iłya Bursov    schedule 18.03.2015


Ответы (1)


Из Википедии:

Принцип разделения интерфейсов (ISP) гласит, что ни один клиент не должен зависеть от методов, которые он не использует.

Противоположностью этому будет клиент, который вынужден зависеть от методов, которые он не использует. Это может проявляться либо в реализации интерфейса, который ему не нужен, либо в интерфейсе, имеющем методы на слишком широком уровне, либо в классе, в котором определено несколько абстрактных методов, которые не нужны клиенту.

Пример (сначала с интерфейсами):

public interface Book {

    String getAuthor();
    String getGenre();
    String getPageCount();
    String getWeight();
}

public interface EBook extends Book {
    // Oh no - ebooks don't have weight, so that should always return zero!
    // But it makes no sense to include it as an attribute of the interface.
}

Пример с абстрактными методами:

public abstract class Shape {

    public abstract double getVolume();
    public abstract double getHeight();
    public abstract double getLength();
    public abstract double getWidth();
    public abstract Color getColor();
}

public class Line extends Shape {

    public double length;
    public Color color;

    // Kind of forced to have a volume...
    public double getVolume() {
        return 0;
    }

    /// ...and a height...
    public double getHeight() {
        return 0;
    }

    // ...and a width...
    public double getWidth() {
        return 0;
    }

    public double getLength() {
        return length;
    }

    public Color getColor() {
        return color;
    }
}
person Makoto    schedule 18.03.2015
comment
@Makoto, может ли линия быть формой? ... также возможное нарушение LSP. - person CSharper; 28.05.2015