Si tu redéfinis « abstraction » on n'a pas fini … Là tu me parles du simple principe d'encapsulation et d'API.
Si tu me donnes un exemple en east, c'est sûr, ça montre qu'en faisant du east il vaut mieux faire du east. C'est pas faux.
Mais si ton objet implémente implémente une interface
Donc là on va repartir sur le type hinting et effectivement, on ne peut pas (encore) type-hinter de simples types de getters. Ceci n'empêche pas d'utiliser les ValueObjects tant loués, et n'augmente pas le niveau d'abstraction.
Si tu me donnes un exemple en east, c'est sûr, ça montre qu'en faisant du east il vaut mieux faire du east. C'est pas faux.
Mais si ton objet implémente implémente une interface
Citizen
, il n'a plus besoin d'implémenter giveGenderToMoneyProvider
, giveAgeToAccessProvider
, giveAgeToAlcoholProvider
pour pouvoir avoir de la thune, entrer dans un bar et l'y dépenser. Du coup plus besoin d'étendre cette classe pour implémenter au passage la communication avec les interfaces MoneyProvider
, AccessProvider
et AlcoholProvider
. C'est plus simple et plus abstrait à la fois. Moins d'interfaces, moins de classes et *respire* moins de méthodes. C'est moins moche aussi du coup !Donc là on va repartir sur le type hinting et effectivement, on ne peut pas (encore) type-hinter de simples types de getters. Ceci n'empêche pas d'utiliser les ValueObjects tant loués, et n'augmente pas le niveau d'abstraction.