SOLID jest to zestaw zasad dobrego programowania obiektowego. Stanowią fundament projektowania oprogramowania, które mogą pomóc programistom tworzyć bardziej zorganizowane, elastyczne i łatwe w utrzymaniu systemy.
Druga zasada SOLID jest to zasada otwarte/zamknięte (ang. open/close principle) sformułowana przez Bertranda Meyera.
Jaka jest Definicja ?
Zgodnie z zasadą otwarte/zamknięte każda klasa powinna być otwarta na rozbudowę, ale zamknięta na modyfikację. W związku z tym istniejący kod nie powinien być zmieniany w celu dodania nowych funkcji, a jedynie możliwy do rozszerzania.
Jak to osiągnąć?
Stosując interfejsy oraz polimorfizm możemy traktować wiele rożnych obiektów zgodnie z jednym interfejsem, co znacznie ułatwia dodawanie nowych funkcji bez ingerencji w kod istniejący.
W poniższym przykładzie klasa Pilot może wywołać wszystkie klasy, które tylko będą implementowały interfejs ITv. Ponadto, rozszerzając aplikację poprzez dodanie nowego programu nie wymusza wprowadzania żadnych zmian w kodzie. Jedyną modyfikacją jest dodanie odpowiedniej klasy oraz utworzenie jej dependencji w metodzie main.
public interface ITv {
public void włącz();
}
public class CanalPlus implements ITv{
@Override
public void włącz() {
System.out.println("Program Canal+");
}
}
public class Discovery implements ITv{
@Override
public void włącz() {
System.out.println("Program na Discovery");
}
}
public class HBO implements ITv{
@Override
public void włącz() {
System.out.println("Program HBO");
}
}
public class Pilot {
public void włączProgram(ITv program){
program.włącz();
}
}
public class App
{
public static void main( String[] args )
{
HBO HBO = new HBO();
CanalPlus canalPlus = new CanalPlus();
Discovery discovery = new Discovery();
Pilot pilot = new Pilot();
pilot.włączProgram(discovery);
}
}