Article View: pl.comp.objects
Article #13754Re: Transfer objects
From: Filip Sielimowicz
Date: Sun, 11 Dec 2005 13:52
Date: Sun, 11 Dec 2005 13:52
103 lines
5631 bytes
5631 bytes
Użytkownik "Michał Słocinski" <nobody@nowhere.com> napisał w wiadomości news:slrndpo7kg.a7o.nobody@localhost.localdomain... > Dnia 07.12.2005 Przemek Pokrywka <adres@zastrzezony.com> napisał/a: >> Czy transfer objects (jako pattern J2EE) są obiektowe? >> Bo mi się wydaje, że nie >> > > W przypadku transfer object, wzorzec ten wprowadzony został w celu > optymalizacji zdalnych wywołań metod, a jak wiadomo - każda optymalizacja > ma > zwykle jakieś efekty uboczne, którymi zwykle jest koszt związany ze > zmniejszoną czytelnością kodu albo uzależnieniem od platformy sprzętowej > (akurat > w tym przypadku ten drugi aspekt odpada :-)). Utrata obiektowości jest w > tym przypadku ceną za wydajność. Ja bym nie powiedział, że to kwestia wydajności ... Wydaje mi się raczej, że nadużywa się tu terminu "utrata obiektowości", a dokładniej: zaczyna się postrzegać jako "nieobiektowe" wszystko to, co "niesamodzielne i nieuniwersalne". Natomiast nie można tracić z horyzontu podstawowej kwestii: obiektowość ma służyć wierniejszemu odwzorowywaniu rzeczywistości, a nie sobie samej. Wydaje mi się, że bardzo często miesza się różne poziomy analizy, projektu i implementacji. Mam wrażenie że niektórzy wydają z siebie wielkie westchnienia zdumienia, kiedy okazuje się, że obiektowość zaangażowana na poziomie implementacyjnym, technicznym ma zupełnie inną twarz niż obiektowość działająca niby w tym samym obszarze biznesowym, ale na poziomie analizy i projektu. A tymczasem ja się dziwię, że inni się tak dziwią ;). Wiele wzorców projektowych wręcz jawnie rozpina dane od funkcji i widzimy to zarówno w idei takiej jak MVC, jak też we wspomnianym TransferObject i występujących w kontekście DAO i BusinessObject. Niektórzy krzyczą, że to jakieś łamanie zasad obiektowości. A ja mówię: zależy gdzie. Jeśli ktoś obiektowość rozumie jako: "obiekt musi odwzorowywać całą wiedzę zgromadzoną we wszechświecie o tym, do czego jest przydatny" to ja mówię "bzdura totalna". To nie ma po prostu żadnego przełożenia na rzeczywistość. Mamy nóż i mamy chleb. Pytanie: czy to nóż powinien wiedzieć, jak ma kroić chleb, czy chleb ma wiedzieć, jak dać się pokroić nożowi ? Ani jedno ani drugie. To człowiek wie, jak użyć noża, by pokroić chleb. I jak zjeść chleb. Albo jak rzucać nożem. Albo jak chleb pokruszyć i rzucić ptactwu. Ptactwo samo sobie chleba nie drobi (mimo, że drobiem jest, jak mówią). Chleb się też sam raczej dla ptactwa nie drobi, choć można by tu siespierać, czy rzeczywiście sięsam z czasem nie pokruszy ... Jak mistrz cukierni woła: "Kajtek, bierz no te paletę z chlebem i pędź na Marszałkowską do sklepu, bo dziś otwierają wcześniej", to sprawa jest oczywista: to Kajtek ma wiedzieć, jak wziąć ten TransferObject i gdzie z nim polecieć. Bo chyba nikt mi nie powie, że paleta powinna mieć metodę "użyj Kajtka do tego żeby się przenieść na Marszałkowską". Wcale to nie znaczy jednak, że paleta z chlebami to jest jakaś prehistoryczna struktura a nie obiekt, więc jest fe. Wcale nie: paleta jest obiektem, tyle, że ktoś zauważył, że jego kompetencje w kwestii wpływu na rzeczywistość są bardzo ograniczone, więc nie snuł fantazji na temat: "a gdyby tak moja paleta potrafiła sama podpiąć się do NASA, złamać szyfry, zamienic się miejscem z głównym astronautą to moglibyśmy już dziś stosunkowo tanio dostarczyć świeży chleb na Marsa". Zamiast fantazji mamy konkret w postaci metody: "zatrzaśnij", którą Kajtek używa, kiedy układa wiele palet w stos i chce, by ta co na górze prostą zapadką przymocowała się do tej, co pod nią. To jest właśnie to, czego oczekuje Kajtek od palety w kwestii obiektowości i to, w czym paleta może być i jak najbardziej jest kompetentna. Powiem nawet więcej: paleta czuje ogromną przyjemność, kiedy może tego typu zadanie wykonać sprawnie i profesjonalnie, natomiast czuje ogromne przerażenie, kiedy ktoś zaczyna do niej zamiast chleba wkładać system nawigacji satelitarnej i puszczając oko szepcze: no moja mała, już niedługo będziesz ... Uważam, że należy dbać o to, by nie pakować kosmicznych problemów na barki prostych narzędzi cukiernika, bo przerażenie i dezorientacja tychże bezpośrednio przekłada się na to, że się potem stos palet najzwyczajniej nie trzyma kupy i Kajtek na Marszałkowskiej otwierając drzwi od samochodu wysypuje chleb klienta prosto na ulicę. A pogoda dziś nie najlepsza.
Technical Details
Message-ID:
<dnhavr$olf$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<dn7emu$ke3$1@news.onet.pl> <slrndpo7kg.a7o.nobody@localhost.localdomain>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail From: "Filip Sielimowicz" <sielim@poczta.onet.pl> Newsgroups: pl.comp.objects Subject: Re: Transfer objects Date: Sun, 11 Dec 2005 14:52:56 +0100 Organization: Onet.pl Lines: 104 Message-ID: <dnhavr$olf$1@news.onet.pl> References: <dn7emu$ke3$1@news.onet.pl> <slrndpo7kg.a7o.nobody@localhost.localdomain> NNTP-Posting-Host: host-217-172-233-228.gdynia.mm.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1134309180 25263 217.172.233.228 (11 Dec 2005 13:53:00 GMT) X-Complaints-To: usenet@news.onet.pl NNTP-Posting-Date: Sun, 11 Dec 2005 13:53:00 +0000 (UTC) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-Sender: HWuT3ZQ16+B3O4dnsZlCZgocIOkeW3FM X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-Priority: 3 X-MSMail-Priority: Normal Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit