4. I — Interface Segregation Principle (Принцип разделения интерфейсов)

4. I — Interface Segregation Principle (Принцип разделения интерфейсов)

Клиенты не должны зависеть от интерфейсов, которые они не используют.

Лучше несколько маленьких интерфейсов, чем один громоздкий.
Каждый интерфейс должен описывать только то поведение, которое действительно нужно конкретному классу.

// Нарушение
interface Worker {
    void work();
    void eat();
}

class Robot implements Worker {
    public void work() { System.out.println("Работает"); }
    public void eat() { /* Робот не ест */ throw new UnsupportedOperationException(); }
}

// Правильно
interface Workable { void work(); }
interface Eatable { void eat(); }

class Human implements Workable, Eatable {
    public void work() {}
    public void eat() {}
}

class Robot implements Workable {
    public void work() {}
}


Автор: к.п.н., Румянцев Сергей Александрович, доцент Финансового университета при Правительстве РФ; доцент ОЧУВО Международного инновационного университета; Консалтинг, управление разработкой ПО; системный и бизнес анализ; менеджмент; аналитиз данных; управление ИТ. Телефон для связи +79269444818 (мессенджеры)   Короткая ссылка:

4. I — Interface Segregation Principle (Принцип разделения интерфейсов)

Клиенты не должны зависеть от интерфейсов, которые они не используют.

Лучше несколько маленьких интерфейсов, чем один громоздкий.
Каждый интерфейс должен описывать только то поведение, которое действительно нужно конкретному классу.

// Нарушение
interface Worker {
    void work();
    void eat();
}

class Robot implements Worker {
    public void work() { System.out.println("Работает"); }
    public void eat() { /* Робот не ест */ throw new UnsupportedOperationException(); }
}

// Правильно
interface Workable { void work(); }
interface Eatable { void eat(); }

class Human implements Workable, Eatable {
    public void work() {}
    public void eat() {}
}

class Robot implements Workable {
    public void work() {}
}


https://webprogr.ru/~fHfEh
Короткая ссылка на новость:https://webprogr.ru/~fHfEh


Последние новости

4. I — Interface Segregation Principle (Принцип разделения интерфейсов)

4. I — Interface Segregation Principle (Принцип разделения интерфейсов)

Клиенты не должны зависеть от интерфейсов, которые они не используют.

Лучше несколько маленьких интерфейсов, чем один громоздкий.
Каждый интерфейс должен описывать только то поведение, которое действительно нужно конкретному классу.

// Нарушение
interface Worker {
    void work();
    void eat();
}

class Robot implements Worker {
    public void work() { System.out.println("Работает"); }
    public void eat() { /* Робот не ест */ throw new UnsupportedOperationException(); }
}

// Правильно
interface Workable { void work(); }
interface Eatable { void eat(); }

class Human implements Workable, Eatable {
    public void work() {}
    public void eat() {}
}

class Robot implements Workable {
    public void work() {}
}


Рейтинг@Mail.ru