🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Circular Unit Reference (Circular Class Reference)

#346400
From: wloochacz
Date: Wed, 07 Mar 2018 20:43
64 lines
4342 bytes
W dniu 2018-03-07 o 20:59, Roman Tyczka pisze:
/ciach/

>> 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.
W używaniu - tak.
W implementacji, kierunek jest od klasy do hosta.
A poza tym, niech Przemek powie o co mu chodziło ;-)

To co opisałem nie nadaje się do realizacji cyt: "Taka struktura 
drzewiasta  Powiedzmy że nieokreślona na etapie projektowania..."
Tu jest wymagany bardzo dokładny i ściśle określony projekt.

>> 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.
Po pierwsze, to tu nie jest IoC (IoC u mnie jest używane inaczej i do 
innych celów).
Po drugie, napisałem równocześnie, a nie że w ogóle.
Bp np. w zależności od konfiguracji (i tak mam dokładnie, bo np. Intf 
AppClient jest zaślepiony dla usług, a Host.Misc.Dialogs jest kierowany 
do loggera) może być implementowane jak się chce.

>>> 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.
Dlatego trzeba to pisać możliwie prosto. Albo używając typów prostych, 
albo deklarując parametry w jak najmniejszej liczbie modułów.
To w końcu CORE ma być czy co?

Upraszając, u mnie core to jest core.
Wszystko fikuśne to IoC/DI.

-- 
wloochacz
Technical Details
Message-ID: <5aa04edf$0$673$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!peer03.am4!peer.am4.highwinds-media.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.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> <5aa02014$0$31354$65785112@news.neostrada.pl> <dyi5ls6ud9lq$.dlg@tyczka.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!peer03.am4!peer.am4.highwinds-media.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.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> <5aa02014$0$31354$65785112@news.neostrada.pl> <dyi5ls6ud9lq$.dlg@tyczka.com>
From: wloochacz <wloochacz@no.spam.gmail.com>
Date: Wed, 7 Mar 2018 21:43:10 +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: <dyi5ls6ud9lq$.dlg@tyczka.com>
Lines: 64
Message-ID: <5aa04edf$0$673$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.186.39.214
X-Trace: 1520455391 unt-rea-a-01.news.neostrada.pl 673 79.186.39.214:57153
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Bytes: 4140
X-Received-Body-CRC: 4101209870
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit