W poprzedniej części niniejszego cyklu mimo usilnych starań nie udało się doprowadzić do przygotowania testów mających kontrolować refaktoryzowany kod. W tej części – mogę to obiecać – testy wreszcie powstaną. Przygotowania testów, zniweczyło występowanie we wszystkich czterech metodach wywołania statycznej metody Show() klasy MessageBox. Co począć z tym wywołaniem? Najbezpieczniejszym rozwiązaniem będzie ...
Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 4.
Sztuka programowania 4267 dni, 20 godzin, 54 minuty temu 53 źrodło rozwiń
Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 3.
Dotychczasowe działania refaktoryzacyjne doprowadziły do wydzielenia refaktoryzowanego kodu do oddzielnej klasy, w oddzielnym pliku. Aby bezpiecznie przeprowadzić dalsze modyfikacje konieczne jest uzyskanie wiarygodnego mechanizmu weryfikującego ich poprawność. Po prostu potrzebne są testy. W jaki sposób przetestować metody importujące dane? Najlepiej dokonać za ich pomocą importu i sprawdzić czy zaimportowany plik daje oczekiwane dane. Przyglądając się poszczególnym metodom można zauważyć, że wszystkie ...
Sztuka programowania 4267 dni, 20 godzin, 54 minuty temu 105 źrodło rozwiń
Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 1.
Dawno, dawno temu, kiedy graficzne środowisko Windows zaczęło pretendować do miana systemu, powstały także środowiska dla programistów realizujące ideę RAD, czyli Rapid Application Developmnent, co w tłumaczeniu na polski oznaczało szybkie tworzenie aplikacji. W Windows – początkowo – istniały dwa takie środowiska: Visual Basic i Delphi. Po jakimś czasie pojawiły się kolejne. Ale nie to było istotne, a fakt, że nieświadomie narodził się także nowy styl programowania...
Sztuka programowania 4267 dni, 7 godzin, 20 minut temu 98 źrodło rozwiń
Postem tym chciałbym rozpocząć mini cykl o zastosowaniu wzorców projektowych w języku JavaScript - wbrew pozorom, w tym języku również można je stosować! Na pierwszy ogień postanowiłem wziąć jeden z moich ulubionych wzorców - strategię. Myślę, że większość z nas, stosowała i stosuje ten wzorzec na co dzień (czasem nawet nieświadomie), jednak dla przypomnienia (za wikipedią): Wzorzec strategii definiuje rodzinę algorytmów, z których każdy zdefiniowany jest w osobnej klasie implementującej wspólny interf...
Sztuka programowania 4353 dni, 20 godzin, 26 minut temu 123 źrodło rozwiń
Tak mnie wzięło na wzorce projektowe ostatnimi czasy, dzisiaj coś o o odwiedzającym (wizytatorze). Polska Wikipedia mówi o nim tak odwiedzający.
Architektura 4875 dni, 41 minut temu 275 źrodło rozwiń
Autor: W poprzedni wpisie przedstawiłem podstawową koncepcję wzorca projektowego MVVM oraz pokazałem jak złączyć widok (View), będący graficzną reprezentacją naszej logiki biznesowej wraz modelem (Model) przy wykorzystaniu klasy pośredniczącej (ViewModel). Brakującym elementem w przedstawionym przykładzie była implementacja zdarzeń jakie oferują nam kontrolki. Z pomocą przychodzi nam wzorzec projektowy Command, który doczekał się swojej implenetacji w Silverlight 4. Ogólna koncepcja działania polega ...
Architektura 5144 dni, 15 godzin, 20 minut temu 331 źrodło rozwiń
Dziś chciałbym opisać kolejny wzorzec/mechanizm który będę używal i ma on na celu znaczne uproszczenie kodowania i eliminowanie niepotrzebnych powiązań miedzy obiektami. Event Aggregator Jak już wcześniej wspomniałem ten wzorzec/mechanizm ma na celu eliminowanie niepotrzebnych powiązań miedzy obiektami. Stanowi on pojedyncze źródło dla wielu obiektów. W najprostszej formie wygląda to tak że rejestrujemy klasy które dotyczą konkretnego zdarzenia do naszego event aggregatora. Te klasy nazywają się uchwyt...
Architektura 5162 dni, 6 godzin, 34 minuty temu 267 źrodło rozwiń
Autor: No to postaram się opisać coś co się przydaje (jak się umie stosować – to przy wzorcach zawsze trzeba powtarzać). Korzystając z okazji od razu sobie to utrwalę, zgodnie z zasadą ‘ucz się ucząc’, czy jakoś tak Na początek zacznę od wzorca strategii, jest to zdecydowanie jeden z prostszych i upiększających kod wzorców, z jakiś powodów też został wybrany jako pierwszy przez autorów “Head First Design Patterns”. Dodatkowymi atutami przemawiającymi, żeby omówić akurat ten wzorzec, jest fakt, że w bard...
Architektura 5270 dni, 22 godziny, 49 minut temu 186 źrodło rozwiń
Adapter jest kolejnym z wzorców projektowych, które postanowiłem sukcesywnie omawiać na swoim blogu. Wszystkich zainteresowanych wzorcami projektowymi (dla C#) zapraszam do śledzenia zmian -zapewniam, że będą się tutaj pojawiały kolejno wszystkie znane wzorce projektowe.
Architektura 5463 dni, 5 godzin, 25 minut temu 224 źrodło rozwiń
Autor: Przypadkiem trafiłem na fajny cheetsheet zawierający zestawienie podstawowych wzorców projektowych, może się komuś przyda :)
Architektura 5475 dni, 22 godziny, 19 minut temu 366 źrodło rozwiń
Wzorzec Interpreter, będący właściwie kompozytem, z tą drobną różnicą, że stosowany jest on do intepretowania/przetwarzania danych zapisanych w jakimś konkretnym języku/składni. Zbierając informacje na jego temat kilkukrotnie natknąłem się na wzmiankę, że przy bardziej skomplikowanym ‘języku’(czymkolwiek, co jest do interpretowania) nie jest on najlepszym wyjściem, ponieważ wydajnościowo troszeczkę kuleje.
Architektura 5511 dni, 7 godzin, 34 minuty temu 108 źrodło rozwiń
Dzisiaj kilka słów na temat wzorca Flyweight – “waga piórkowa”. Wzorzec ten należy do grupy wzorców strukturalnych. Flyweight zajmuje się udostępnianiem pojedynczego obiektu wielu klientom. Wspólny dostęp znajduje zastosowanie gdy występuje potrzeba zarządzania dużą ilością obiektów(setki, tysiące, itp), które posiadają jakąś niezmienną część. Dość prymitywnym przykładem może być proces tworzenia oferty sprzętu: zamiast do każdego długiego opisu powiedzmy procesora, wraz z wszystkimi danymi technicznymi,...
Architektura 5518 dni, 20 godzin, 55 minut temu 172 źrodło rozwiń
Konkurs w którym można wygrać książkę Head First: Wzorce Projektowe.
Czytając Agile: Principles, Patterns and Practices natknąłem się (dla posiadaczy książki - na stronie 252) na ciekawą tezę dotyczącą UML-owej relacji agregacji. Uncle Bob twierdzi, że relacja ta nie wnosi niczego do diagramu i odradza jej użycie. Co więcej, w sekcji dotyczącej kompozycji (następna strona) pada stwierdzenie, że definicja tej relacji (czas życia części jest ograniczony do czasu życia całości) jest bez znaczenia dla programisty C#, ponieważ istnieje garbage collector. Przyznam się szczerze...
Architektura 5567 dni, 3 godziny, 45 minut temu 73 źrodło rozwiń
W jaki sposób infrastruktura przechowująca stan usług może być skalowana i zabezpieczona przed awarią? Odpowiedzią na to pytania jest wzorzec Service Grid. Jego nazwa może być nieco myląca. Nie ma on bowiem nic wspólnego z gridami oraz raczej niewiele z usługami w klasycznym pojęciu SOA. Service Grid jest nazwą dla podejścia, w którym wiele instancji infrastruktury przechowującej stan usług jest równolegle aktywnych (zwykle na wilu fizycznych maszynach). Instancje te współdzielą między sobą informacje d...
Programowanie rozproszone 5569 dni, 20 godzin, 35 minut temu 36 źrodło rozwiń
Wzorzec memento pozwala na przechwycenie stanu obiektu i zachowanie go gdzieś na zewnątrz tego obiektu, dzięki czemu może być on później odtworzony....
Architektura 5584 dni, 7 godzin, 46 minut temu 220 źrodło rozwiń
Kompozyt (Composite) pozwala na takie zgrupowanie różnych obiektów, że mogą być one traktowane przez klienta w jednakowy sposób. Przykładem może być wyliczanie zawartości katalogu na dysku. Katalog może zawierać różne elementy: pliki, inne katalogi, drukarki...
Architektura 5613 dni, 20 godzin, 19 minut temu 123 źrodło rozwiń
Krótki opis wzorca Łańcuch odpowiedzialności (Chain of responsibility). Wzorzec Chain of Responsibility pracuje z listą obiektów (Handlerów), które implementują interfes IHandler. Handlery te uporządkowane są w łańcuch. Każdy Handler przyjmuje komendę (może to być implementacja wzorca projektowego Command) i jeśli potrafi to zrobić - obsługuje ją. Jeśli dany Handler nie może obsłużyć komendy, przekazuje ją następnemu elementowi w łańcuchu.
Architektura 5628 dni, 8 godzin temu 210 źrodło rozwiń
Budowniczy (Builder) oddziela specyfikację (definicję) jakiegoś złożonego obiektu od procesu jego konstruowania. We wzorcu tym nacisk jest położony na konstruowanie złożonych obiektów krok po kroku (etapami). Części muszą być tworzone w jakiejś kolejności lub przy użyciu określonego algorytmu.
Architektura 5640 dni, 7 godzin temu 147 źrodło rozwiń
Rozważania na temat wzorca Singleton i jego różnych implementacji.