Article View: pl.comp.lang.delphi
Article #346400Re: Circular Unit Reference (Circular Class Reference)
From: wloochacz
Date: Wed, 07 Mar 2018 20:43
Date: Wed, 07 Mar 2018 20:43
64 lines
4342 bytes
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-mailReferences:
<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