Sobes.tech
Middle+

Pasakokite apie sąsajų atskyrimo principą (Interface Segregation Principle).

sobes.tech AI

Atsakymas iš AI

Interfeisų atskyrimo principas (ISP) sako: klientai neturėtų priklausyti nuo interfeisų, kurių jie nenaudoja.

Tai reiškia, kad vietoj vieno didelio interfeiso su daugybe metodų, geriau sukurti keletą mažesnių ir specializuotų interfeisų. Kiekvienas klientas turėtų įgyvendinti tik tuos interfeisus, kurie jam iš tikrųjų reikalingi.

ISP laikymosi privalumai:

  • Mažesnis priklausomumas: Pakeitimai viename didelio interfeiso metode nepaveiks tų klientų, kurie jo nenaudoja.
  • Lankstesnis kodas: Naujos įgyvendinimo galimybės yra lengviau pridėti, nes jos turi įgyvendinti tik būtinus interfeisus.
  • Geresnė skaitomumas: Kodas tampa aiškesnis, kai interfeisai aiškiai apibrėžia konkrečias atsakomybes.

Pavyzdys:

Vietoj:

interface Worker {
    void work();
    void eat();
    void sleep();
}

Geriausia:

interface Workable {
    void work();
}

interface Eatable {
    void eat();
}

interface Sleepable {
    void sleep();
}

Tada klasė HumanWorker gali įgyvendinti visas tris:

class HumanWorker implements Workable, Eatable, Sleepable {
    @Override
    public void work() {
        // ...
    }

    @Override
    public void eat() {
        // ...
    }

    @Override
    public void sleep() {
        // ...
    }
}

O RobotWorker tik Workable:

class RobotWorker implements Workable {
    @Override
    public void work() {
        // ...
    }
}