Article View: pl.comp.lang.delphi
Article #346398Re: Circular Unit Reference (Circular Class Reference)
From: wloochacz
Date: Wed, 07 Mar 2018 17:23
Date: Wed, 07 Mar 2018 17:23
70 lines
4044 bytes
4044 bytes
W dniu 2018-03-07 o 13:25, immo pisze: /ciach/ > Nie wiem czy by to kodu nie zagmatwało za bardzo, w sensie za dużego naddatku kodu :) > Może nie wynikało to z pierwszego posta, ale ten Core może mieć więcej w sobie tych klas, a każda klasa może mieć w sobie także nielimitowaną ich ilość. Taka struktura drzewiasta :) Powiedzmy że nieokreślona na etapie projektowania... Takie coś jakby? http://www.dflex.pl/dflex-ftp/own/dfSampleCode.png Zwróć uwagę na podświetlony Host. My to nazywamy Host Plugin Bridge (Bus?), ale to już trochę zaszłość z tą nazwą... Host to kontener na singletony lub fabryki, które dają dostęp do korowych (podstawowych) funkcjonalności systemu. Pisząc Host. mam dostęp do praktycznie wszystkiego co mi potrzebne. Bez zastanawiania się co gdzie jest i jak tego użyć. Host zawiera tylko interfejsy. Ich implementację dostarcza konkretna klasa, która rejestruje się w Host. Host nie ma pojęcia o tej klasie, ona tylko trzyma referencję na interfejs. I dlatego nie mam Circular Unit Reference (Circular Class Reference). To samo dałoby się osiągnąć za pomocą Global Container, ale... pisałem to w czasach kiedy generyków nie było no i mogłby sie pojawić zależności. Poza tym, generyki tu w niczym nie pomogą. I jedna sprawa - nie ma opcji, aby ten sam interfejs był zaimplementowany w runtime przez dwie różne klasy równocześnie. I nigdy nie było mi to potrzebne. > > Core > |-Connection > | |-MainConnection > | | |-cosTamX > | | |-... > | | \-cosTamXX > | |-... > | \-ConnectionX > |-Tools > |-Logic > | |-Logic1 > | |-... > | \-LogicX > |-OtherFN > |-... > \-OtherFN_X > > Wydaje mi się, że budowanie takiego interfejsu w pewnym momencie byłoby problemowe - a może nie? Nie jest. Interfejs jest stały, praktycznie się nie rozwija, jeśli się już wszystkie potrzebne usługi się zaimplementuje. Osobiście nie tykam tego latami. Implementację owszem, ale sam korowy interfejs jest praktycznie stały. > I zdaje sobie sprawę, że chce napisać coś, co jest silnie powiązane, a tendencje są takie żeby tego nie robić... Tam raczej nie ma powiązań twardych - jedna usługa w Host nie zależy od innej, ale może jej używać. Poza tym, jeśli nawet są jakieś powiązania, to tylko od interfejsów, a nie od konkretnej ich implementacji. A praktyka pokazała, że najważniejsze jest co innego; wystarczy jeden w uses jeden moduł, gdzie zadeklarowano Host i masz dostęp do wszystkiego. To bardzo wygodne. > Zresztą czytałem gdzieś ze wzorca singletona też nie powinno się używać :P Odpowiedź jest taka sama jak zawsze - to zależy. -- wloochacz
Technical Details
Message-ID:
<5aa02014$0$31354$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!border1.nntp.ams1.giganews.com!nntp.giganews.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<06e89078-c8b6-46f1-8353-fe26050464f7@googlegroups.com> <1f7uetk1q6zns.dlg@tyczka.com> <a9a0ea51-cda4-4d78-b162-30263f6da079@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!border1.nntp.ams1.giganews.com!nntp.giganews.com!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Subject: Re: Circular Unit Reference (Circular Class Reference) Newsgroups: pl.comp.lang.delphi References: <06e89078-c8b6-46f1-8353-fe26050464f7@googlegroups.com> <1f7uetk1q6zns.dlg@tyczka.com> <a9a0ea51-cda4-4d78-b162-30263f6da079@googlegroups.com> From: wloochacz <wloochacz@no.spam.gmail.com> Date: Wed, 7 Mar 2018 18:23:31 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <a9a0ea51-cda4-4d78-b162-30263f6da079@googlegroups.com> Lines: 70 Message-ID: <5aa02014$0$31354$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 79.186.39.214 X-Trace: 1520443412 unt-rea-b-01.news.neostrada.pl 31354 79.186.39.214:54011 X-Complaints-To: abuse@news.neostrada.pl X-Received-Bytes: 3784 X-Received-Body-CRC: 2968663873 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit