🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #346399

Re: Circular Unit Reference (Circular Class Reference)

#346399
From: Roman Tyczka
Date: Wed, 07 Mar 2018 19:59
56 lines
3519 bytes
On Wed, 7 Mar 2018 18:23:31 +0100, wloochacz wrote:

> 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).

Ale u Ciebie to jest jednokierunkowe, a Przemkowi chodziło o to, żeby
korowe interfejsy/klasy znały tego Hosta.

> 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.

Tylko, że jedną z idei interfejsu jest właśnie możliwość użycia wielu
implementacji tego samego interfejsu. To też jest clue systemów opartych na
IoC.

>> 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.

No nie do końca, samo uses linkujące do Hosta to często będzie za mało, gdy
metoda klasy korowej wymaga parametru o typie zdefiniowanym w jej unicie.
 
-- 
pozdrawiam
Roman Tyczka
Technical Details
Message-ID: <dyi5ls6ud9lq$.dlg@tyczka.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <06e89078-c8b6-46f1-8353-fe26050464f7@googlegroups.com> <1f7uetk1q6zns.dlg@tyczka.com> <a9a0ea51-cda4-4d78-b162-30263f6da079@googlegroups.com> <5aa02014$0$31354$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Roman Tyczka <noemail@because.no>
Newsgroups: pl.comp.lang.delphi
Subject: Re: Circular Unit Reference (Circular Class Reference)
Date: Wed, 7 Mar 2018 20:59:59 +0100
Organization: ATMAN - ATM S.A.
Lines: 56
Sender: romek@tyczka.no.found
Message-ID: <dyi5ls6ud9lq$.dlg@tyczka.com>
References: <06e89078-c8b6-46f1-8353-fe26050464f7@googlegroups.com> <1f7uetk1q6zns.dlg@tyczka.com> <a9a0ea51-cda4-4d78-b162-30263f6da079@googlegroups.com> <5aa02014$0$31354$65785112@news.neostrada.pl>
NNTP-Posting-Host: 94.75.90.137
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1520452799 31684 94.75.90.137 (7 Mar 2018 19:59:59 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Wed, 7 Mar 2018 19:59:59 +0000 (UTC)
User-Agent: 40tude_Dialog/2.0.15.84
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit