Wzorzec Decorator i relacja Is

0

Dobry wieczór!

Chciałbym się zapytać, czy w praktyce zdarza się że stosowanie wzorca Decorator narusza tzw. zasadę relacji Is? Jeżeli tak, czy można by powiedzieć, że to jest pewnego rodzaju kompromis?

Spotkałem się z takim pytaniem/odpowiedzią na stackoverflow, ale tam przykładem posłużyły streamy - co do tego, to wszystko jest jasne.

Jednak podczas nauki wzorca spotkałem się z innym przykładem, np. że dodatek do pizzy rozszerza pizze, później jedno owiaja się w drugie (np. dajmy na to, dla obliczenia ostatecznej ceny). W tym przykładzie dodatek do pizzy jednak nie jest pizzą, więc zostaje naruszona zasada? Czy to po prostu złe podejście?

Z góry dziękuję za odpowiedzi.

1

Dodatek do pizzy nie jest pizzą, ale "pizza w opakowaniu" już potencjalnie może być traktowana jako specjalny przypadek pizzy.

0
Shalom napisał(a):

Dodatek do pizzy nie jest pizzą, ale "pizza w opakowaniu" już potencjalnie może być traktowana jako specjalny przypadek pizzy.

Dziękuję, czyli w takim razie można zamknąć oczy na to że np. "PizzaDodatek extends Pizza"?

1

Nie. PizzaDodatek nie powinien rozszerzać pizzy. Mógłby od biedy implementować jakiś ogólny interfejs, ale tak to na pewno nie.

0
Shalom napisał(a):

Nie. PizzaDodatek nie powinien rozszerzać pizzy. Mógłby od biedy implementować jakiś ogólny interfejs, ale tak to na pewno nie.

Dziękuję za szybką odpowiedź, rozumiem. Właściwie, w tym przykładzie jest implementowanie ogólnego interfejsu! http://www.newthinktank.com/2012/09/decorator-design-pattern-tutorial/

1 użytkowników online, w tym zalogowanych: 0, gości: 1