➡️Cześć wszystkim! Wreszcie nowy artykuł już dosyć długim czasie, uznałem, że pierwsza część singletona jest zbyt krótka to jest i druga część :), ktoś skorzysta na pewno🙂, wszystkie rady i uwagi na temat artykułu polskiego oraz angielskiego, są mile widziane. 🙂
Architektura 2153 dni, 11 godzin, 15 minut temu 121 źrodło rozwiń
W źródłach .NET poszukujemy zastosowań wzorców projektowych. Mało tekstu, zero UML, dużo kodu.
Architektura 2885 dni, 2 godziny, 43 minuty temu 414 źrodło rozwiń
… podczas rekrutacji, a zwłaszcza w codziennym kodowaniu. Jakie zna pan wzorce projektowe i proszę opisać jeden z nich? Mi też zdarzało się tutaj odpowiadać, że Singleton. Bo prosty, bo rozumiem jak działa i jakie problemy rozwiązuje.
Sztuka programowania 3963 dni, 12 godzin, 42 minuty temu 440 źrodło rozwiń
W zdecydowanej większości przypadków jestem przeciwnikiem singleton’a i uważam to za anty-wzorzec. Dużo lepiej użyć IoC i przekazywać wszędzie w konstruktorach tą samą instancję. Istnieją jednak przypadki, w których użycie singleton’a nie jest brzydkie. Ostatnio miałem klasę, która potrzebowała pewnych danych – kolekcję prostych struktur. Każda struktura zawiera string i pole bool. Ze względu, że ta kolekcja musi być wykorzystana w kilku klasach, zdecydowałem się na przeniesienie jej do osobnej klasy (s...
Sztuka programowania 4096 dni, 15 godzin, 19 minut temu 256 źrodło rozwiń
Czasami zachodzi potrzeba serializacji obiektów, które powinny mieć maksymalnie jedną kopie w tym samym AppDomain. Klasycznym przykładem jest System.DBNull, którego deklaracja wygląda następująco:[SerializableAttribute] [ComVisibleAttribute(true)] publicsealedclass DBNull : ISerializable, IConvertible Załóżmy, że mamy klasę, w której jedna z właściwości ma wartość System.DBNull. Oczywiście podczas serializacji i potem deserializacji nie chcemy tworzyć nowej instancji DBNull – jest to sprzeczne z ...
Sztuka programowania 4259 dni, 14 godzin, 17 minut temu 106 źrodło rozwiń
Kiedyś na blogu opisywałem kilka implementacji singleton’a przystosowanych do pracy w środowisku wielowątkowym. Jedna z nich opierała się na tzw. double checked locking:publicsealedclass Singleton { privatestatic Singleton mInstance =null; privatestaticreadonlyobject mSync =newobject(); private Singleton() { } publicstatic Singleton Instance { get { if(m_Instance ==null ) { lock(m_Sync) { i...
Sztuka programowania 4481 dni, 9 godzin, 36 minut temu 212 źrodło rozwiń
Programując, często zadajemy sobie pytanie, jak napisać określoną funkcjonalność i nie mówię tu tylko o tym jaki algorytm zastosować, ale także o sposobach implementacji określonych funkcjonalności. Tutaj swoje miejsce, znajdują właśnie wzorce projektowe, czyli unikalne sposoby implementacji określonych fragmentów kodu, które w większości przypadków, można stosować niezależnie od wybranego przez siebie języka. Dobry programista, zawsze powinien skorzystać z gotowego i sprawdzonego wzorca, bo po pierwsze ...
Architektura 5115 dni, 10 godzin, 46 minut temu 196 źrodło rozwiń
Plik konfiguracyjny. Chcę, aby przy uruchomieniu programu utworzył się obiekt klasy Settings i aby wszystkie inne klasy z niego korzystały. Wyjścia są wg mnie trzy, ale tylko jedno jest dobre : utworzyć obiekt i przekazywać do niego referencje wszędzie tam, gdzie inny obiekt będzie z niego chciał skorzystać -- to dość toporne rozwiązanie, musimy pamiętać o referencjach i o tym, aby przypadkowo nie stworzyć innego obiektu. W moim przypadku nie byłoby z tym kłopotu, ale w projektach bardziej rozbudowanyc...
Przeglądając wpisy na rożnych blogach oraz biorąc udział w dyskusjach na portalach, częstokroć napotykałem na dyskusje jak prawidłowo zaimplementować wzorzec singletona. Jeden z częstszych podawanych przykładów prezentuje poniżej.public sealed class Singleton { static Singleton instance=null; static readonly object padlock = new object(); Singleton() { } public static Singleton Instance { get { if (instance==null) { lock ...
Programowanie rozproszone środa, 28 października 2009 21:41:45 GMT 81 spam? źrodło rozwiń
Rozważania na temat wzorca Singleton i jego różnych implementacji.