🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Circular Unit Reference (Circular Class Reference)

#346398
From: wloochacz
Date: Wed, 07 Mar 2018 17:23
70 lines
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-mail
References: <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