➡️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 2166 dni, 2 godziny, 24 minuty temu 121 źrodło rozwiń
W źródłach .NET poszukujemy zastosowań wzorców projektowych. Mało tekstu, zero UML, dużo kodu.
Architektura 2897 dni, 17 godzin, 52 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 3976 dni, 3 godziny, 51 minut 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 4109 dni, 6 godzin, 28 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 4272 dni, 5 godzin, 26 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 4494 dni, 44 minuty 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 5128 dni, 1 godzinę, 55 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.