🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4754

Re: Singleton w VB

#4754
From: Marcin Swiatek
Date: Mon, 18 Jan 1999 16:30
54 lines
3331 bytes
Czesc (Dobry Wieczor?)

Oczywiscie, cos takiego da sie zrealizowac. Zastanowilem sie nad tym
chwilke i przyszly mi do glowy dwa sposoby.
Kazdy implementuje "design pattern" (jak to nazwac po polsku) 
singleton, ale w zadnym przypadku nie udalo mi sie tego zamknac
po prostu w jednej klasie. Taka implementacja jak w przykladach
C++ do "Design Patterns" nie jest mozliwa (to znaczy - tak mi sie 
wydaje). 
Jako rzeklem, sa dwa sposoby. Jeden - powiedzmy "Singleton zewnetrzny" 
polega na zdefinitowaniu klasy w odrebnym podprojekcie typu ActivexDLL
z Instancing typu 2. To bedzie singleton. Potrzebna bedzie druga 
klasa, z Instancing typu 6, ktora jak wiadomo na zewnatrz widac jako 
zbior funkcji modulu i ktora tworzy sie automatycznie. W klasie 
globalnej robimy funkcje, ktora zwraca singleton, tworzac go w razie 
potrzeby. Musi oczywiscie przechowywac referencje do jedynej instacji 
singletona.
Problem z tym rozwiazaniem jest taki, ze po pierwsze porzebny
jest podprojekt (ale to nie musi byc jego jedyne zastosowanie), 
po drugie uzywamy jedynej klasy typu GlobalMultiUse (a mozna miec
tylko jedna w projekcie) jako class factory, a wcale nie musimy 
chciec jej do tego uzywac (ale to tez w sumie nie problem).
Po trzecie i najwazniejsze programista uzywajacy tego modulu 
moze sobie utworzyc jawnie nasze "class factory" i singleton
przestaje byc singletonem.

Drugi metoda umozliwia utworzenie singletona wewnatrz jednego
projektu. Potrzebna jest klasa i modul (zwykly). W module
deklarujemy funkcje, ktora zwraca singleton (tworzac go w
razie potrzeby). Niemoznosc innego utworzenia obiektu
zapewniamy sobie przez to, ze w obsludze zdarzenia Initialize
musimy sie "dogadac" z modulem, czy obiekt jest tworzony
wlasciwie i w razie potrzeby zglosic blad wykonania.
Wada tej metody polega na tym, ze musimy miec klase i modul.
Poza tym nieuprawnione utworzenie obiektu bedzie wykryte
nie podczas kompilacji tylko w czasie wykonania.
Pierwsza metoda jest o tyle dobra, ze cos takiego
>>Set ref = New Singleton
bedzie bledem skladni (Improper use of New).

No tak, mam nadzieje, ze to co napisalem, da sie zrozumiec.
Jesli nie (wiem, ze jasnosc wywodu nie jest moim atutem)
sluze przykladowym projekcikiem - jesli ktokolwiek sobie
zyczy.

Pozdrawiam

Marcin Swiatek

PS. Ja wiem, ze zadna z tych metod nie jest szczegolnie 
elegancka, ale innych nie widze. Zreszta nawet w materialach
reklamowych Microsoftu o VB nigdzie nie ma slowa "elegancja".

M.
Technical Details
Message-ID: <36A361B3.38825FB6@sympatico.ca>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!orion.cst.tpsa.pl!news.task.gda.pl!news.icm.edu.pl!uw.edu.pl!not-for-mail
References: <016d01be42ba$10fa6c30$0400a8c0@piotrm>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!orion.cst.tpsa.pl!news.task.gda.pl!news.icm.edu.pl!uw.edu.pl!not-for-mail
From: Marcin Swiatek <martek@sympatico.ca>
Newsgroups: pl.comp.objects
Subject: Re: Singleton w VB
Date: Mon, 18 Jan 1999 11:30:43 -0500
Organization: Marcin Swiatek
Lines: 54
Message-ID: <36A361B3.38825FB6@sympatico.ca>
References: <016d01be42ba$10fa6c30$0400a8c0@piotrm>
Reply-To: martek@sympatico.ca
NNTP-Posting-Host: ppp733.on.bellglobal.com
Mime-Version: 1.0
X-Trace: h1.uw.edu.pl 916720674 20654 206.172.238.157 (19 Jan 1999 04:37:54 GMT)
X-Complaints-To: usenet@h1.uw.edu.pl
NNTP-Posting-Date: 19 Jan 1999 04:37:54 GMT
X-Mailer: Mozilla 4.05 [en]C-SYMPA  (Win95; I)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit