Article View: pl.comp.objects
Article #14854Re: kolekcja/manager obiektów
From: Darek Kubiczek
Date: Tue, 11 Jul 2006 09:19
Date: Tue, 11 Jul 2006 09:19
51 lines
3219 bytes
3219 bytes
Przemek Pokrywka napisał(a): > Witam Państwa! > > W praktyce często mam do czynienia z następującą sytuacją: > pojedynczy obiekt (nazwę go manager) jest centralnym punktem dostępu do > wielu obiektów jednego typu (dzieci). Cykl życiowy tych obiektów jest > taki, że manager rozpoczyna życie przed dziećmi, które kończą swoje > życia przed końcem życia managera. Manager umożliwia odnajdywanie swoich > dzieci wg określonych kryteriów oraz tworzenie ich. > > Jak na razie wszystko jest ok, ale zaskakująco często widuję > towarzyszącą temu wzorcowi praktykę, która już nie jest dla mnie taka ok. > > Mianowicie bardzo często obiekt managera poza udostępnianiem metod, > które logicznie nie pasują do dzieci, jak np. wyszukiwanie zawiera > metody służące do operowania na pojedynczych dzieciach. > > Np. > SessionManager udostępnia metodę > > void setDeactivated(Session s) > > której cała implementacja to: > > s.setDeactivated(); > > Czy nie byłoby lepiej, gdyby to użytkownik operował bezpośrednio na > Session? Przedstawiony schemat, który często napotykam, pachnie mi > antywzorcem Man-In-The-Middle. > > Wydaje mi się, że jeśli nawet taki manager chce koniecznie kontrolować > zmiany w swoich dzieciach, to lepszy do tego jest wzorzec Observer, > zgodzą się ze mną Państwo? Zgadzam sie. W poprzednim projekcie spotykalem bardzo czesto taki schemat. Poczatkowo operowalismy bezposrednio na obiektach-dzieciach. Pozniej zwykle okazywalo sie, ze potrzebne jest wyslanie powiadomienia do zainteresowanych obiektow w zwiazku z wykonywana operacja na obiekcie-dziecku. Korzystalismy wtedy z wzorca Observer (Manager byl obiektem obserwowanym). W koncu zrezygnowalismy z bezposredniego operowania na obiektach-dzieciach i wszystkie akcje zmieniajace stan takiego obiektu-dziecka byly zawsze kontrolowane przez jego managera (obserwowanego). D.
Technical Details
Message-ID:
<1152609582.735276.3000@s13g2000cwa.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!border1.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!s13g2000cwa.googlegroups.com!not-for-mailReferences:
<e8u9d9$bf1$1@news.onet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!border1.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!s13g2000cwa.googlegroups.com!not-for-mail From: "Darek Kubiczek" <darek_kubiczek@wp.pl> Newsgroups: pl.comp.objects Subject: Re: kolekcja/manager obiektów Date: 11 Jul 2006 02:19:42 -0700 Organization: http://groups.google.com Lines: 59 Message-ID: <1152609582.735276.3000@s13g2000cwa.googlegroups.com> References: <e8u9d9$bf1$1@news.onet.pl> NNTP-Posting-Host: 68.20.140.8 Mime-Version: 1.0 X-Trace: posting.google.com 1152609588 15076 127.0.0.1 (11 Jul 2006 09:19:48 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 11 Jul 2006 09:19:48 +0000 (UTC) In-Reply-To: <e8u9d9$bf1$1@news.onet.pl> User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; DGD (AutoProxy4); .NET CLR 1.1.4322; .NET CLR 2.0.50727),gzip(gfe),gzip(gfe) X-HTTP-Via: 1.0 InetProxy8 (NetCache NetApp/6.0.3D1) Complaints-To: groups-abuse@google.com Injection-Info: s13g2000cwa.googlegroups.com; posting-host=68.20.140.8; posting-account=faiyAQ0AAADb-8q_Mi-T3e0kux5tt9kt Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit