🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #14854

Re: kolekcja/manager obiektów

#14854
From: Darek Kubiczek
Date: Tue, 11 Jul 2006 09:19
51 lines
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-mail
References: <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