@Crozin - tutaj raczej chodzi o:
String word = new PlainTextFile("plik").getLine(0).getWords()[0];
//vs
String word = new PlainTextFile("plik").getFirstWordFromLine(0);
//lub bardziej ogólnie
String word = new PlainTextFile("plik").getWordFromLine(0, 0);
Chodzi o to, że w pierwszym przypadku odkrywamy implementację klasy PlainTextFile, to że obiekt tej klasy składa się z obiektów Line.
Inny bardziej jaskrawy przykład:
class newsActions
{
public function doSave(...)
{
//... coś tam robię i na końcu przekierowanie
$this->getController()->redirect(...);//"wraki pociągów" ;)
//vs
$this->redirect(...);
}
}
ukrywamy to, że korzystamy z front controllera aby zrobić przekierowanie. Np. w testach jednostkowych łatwiej nam w razie potrzeby przesłonić jedną metodę aby zrobić jakąś zaślepkę, niż przesłaniać dwie metody. Poza tym taki kod jest bardziej odporny na zmiany, bo co jeśli metoda redirect z kontrolera (zwróconego przez getController) zostanie przeniesiona gdzieś indziej? Czekają nas zmiany w wielu miejscach, zamiast w jednym, gdyż klasy są mocno zależne od siebie.