Article View: pl.comp.lang.delphi
Article #346408Re: Circular Unit Reference (Circular Class Reference)
From: immo
Date: Tue, 13 Mar 2018 14:03
Date: Tue, 13 Mar 2018 14:03
37 lines
5390 bytes
5390 bytes
W dniu wtorek, 13 marca 2018 13:29:29 UTC+1 użytkownik Mikołaj 'Virion' Milewski napisał: > W dniu sobota, 10 marca 2018 09:59:45 UTC+1 użytkownik immo napisał: > > > Chciałbym mieć dalej tę samą funkcjonalność ale napisaną dzisiaj :) > > To, co Ty nazywasz funkcjonalnością ja nazywam dependency hell. Dzisiaj powszechnie używa się podejścia Inversion Of Control / Dependency Injection: IoC nie jest tożsame z DI :) Poza tym - nie rozumiem o co Ci chodzi :) Chyba że o to, że koniec końców w aplikacji widoczne jest to jako obiekt który ma w sobie obiekty :P > - system to zbiór komponentów - można podzielić je na przykład na usługi oraz ich klientów > - każda usługa ma publiczny interfejs oraz prywatną implementację > - klient określa, od których usług jest zależny, poprzez deklarację parametrów konstruktora o typach interfejsowych; usługa też może być klientem > - wszystkie komponenty rejestrujemy w kontenerze IoC, usługi rejestrujemy z użyciem ich publicznych interfejsów > - kontener IoC załatwia automatyzację: wykrywanie zależności, zarządzanie czasem życia komponentów, wreszcie dbaniem o to, żeby każdy komponent dostał te i tylko te usługi, których mu trzeba (od których zależy). > > To opis bardzo z grubsza - dużo na ten temat napisano, a same mechanizmy kontenerów IoC z reguły pozwalają na dużo więcej, np. implementację mechanizmu pluginów. Korzyści: > > - separacja odpowiedzialności, małe klasy robią jedną rzecz > - segregacja interfejsów, zmianę w 'frameworkowej' części systemu łatwiej kontrolować > - enkapsulacja, bo implementacja core'owych rzeczy jest zawsze prywatna > - testowalność, bo łatwo podmienić usługi, od których zależy testowany kod na ich zmockowane wersje > - skalowalność, bo implementację usługi można podmienić na proxy, które daje dostęp do zdalnie uruchomionej usługi Przeczytałem i nadal nie rozumiem. Pomijając kwestie interfejsów oraz usług i DI to całą reszta mniej więcej dokładnie opisuje to co mam. Przecież nie będę tłumaczył że jest to framework niezależny od jakiejkolwiek aplikacji gdzie na podstawie konfiguracji dostarczanej mu z dowolnego miejsca niejako buduje sobie aplikacje i sposób jej działania? Dlatego chce mieć singletona bo nie ma potrzeby żeby była więcej niż jedna instancja frameworka (bo to nawet niewskazane), chce mieć wszystko usystematyzowane i poukładane, tak aby dostęp do podstawowych 'niezmiennych' funkcjonalności był jednakowy. Rozszerzenia logiki dostępne przez dllki, formy generowane przez fabrykę na podstawie metadanych... Zresztą z tego powodu nie chciałem wchodzić w dywagacje nad tym czym to jest, ale o pomysły jak to wykonać po dzisiejszemu zachowując funkcjonalność, bo nie wyobrażam sobie pracy nad czymś co nie jest usystematyzowane. > ...a singletony to zło. W systemie powinien być tylko jeden singleton: kontener IoC. Zło a jednak sam to proponujesz :) Nie ma znaczenia czy dla kontenera IoC czy dla czegoś innego. Zresztą, ja już pisałem że to jest strasznie uproszczone dla potrzeb pokazania tutaj samego schematu działania a nie tego jak to faktycznie jest zrobione. I to tylko kwestia nazewnictwa czy Ty to nazwiesz kontener IoC w którym trzymasz wszystko, czy ja to nazwę Core i trzymam dokładnie to samo. pozdrawiam, Przemek O.
Technical Details
Message-ID:
<434070bc-f6d9-465a-9e0c-3b6f942ec775@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!r195no1661729itc.0!news-out.google.com!h73-v6ni1498itb.0!nntp.google.com!e10-v6no1655944itf.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!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> <5aa04edf$0$673$65785112@news.neostrada.pl> <039a897c-b565-44af-9878-417a0e3704a9@googlegroups.com> <5aa127ab$0$1005$65785112@news.neostrada.pl> <952c4560-1ed3-4e78-a5fa-89e8254227c4@googlegroups.com> <1w838ct6a2suq.dlg@tyczka.com> <5aa143d6$0$1001$65785112@news.neostrada.pl> <8d0301ff-0c6a-48d3-a311-0765e733e24f@googlegroups.com> <a98a8d85-555e-4d7b-9f23-808d97ecc581@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.36.81.149 with SMTP id s143mr444908ita.7.1520949839427; Tue, 13 Mar 2018 07:03:59 -0700 (PDT) X-Received: by 10.157.14.214 with SMTP id 80mr37560otj.9.1520949838922; Tue, 13 Mar 2018 07:03:58 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!r195no1661729itc.0!news-out.google.com!h73-v6ni1498itb.0!nntp.google.com!e10-v6no1655944itf.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Tue, 13 Mar 2018 07:03:58 -0700 (PDT) In-Reply-To: <a98a8d85-555e-4d7b-9f23-808d97ecc581@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.65.28.194; posting-account=uWBjDgoAAACxkgIP6dtE4dpCnc16V86n NNTP-Posting-Host: 77.65.28.194 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> <5aa04edf$0$673$65785112@news.neostrada.pl> <039a897c-b565-44af-9878-417a0e3704a9@googlegroups.com> <5aa127ab$0$1005$65785112@news.neostrada.pl> <952c4560-1ed3-4e78-a5fa-89e8254227c4@googlegroups.com> <1w838ct6a2suq.dlg@tyczka.com> <5aa143d6$0$1001$65785112@news.neostrada.pl> <8d0301ff-0c6a-48d3-a311-0765e733e24f@googlegroups.com> <a98a8d85-555e-4d7b-9f23-808d97ecc581@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <434070bc-f6d9-465a-9e0c-3b6f942ec775@googlegroups.com> Subject: Re: Circular Unit Reference (Circular Class Reference) From: immo <przemek-o@soft-system.pl> Injection-Date: Tue, 13 Mar 2018 14:03:59 +0000 X-Received-Body-CRC: 3526136349 X-Received-Bytes: 6022 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit