Przejdź do głównej zawartości

Posty

[OOP] Na czym polega wzorzec projektowy Pełnomocnik?

Pełnomocnik (ang. Proxy ) jest wzorcem, który pozwala na zbudowanie warstwy pośredniczącej między obiektem a innymi obiektami, które z niego korzystają. Przykładowo może służyć on do kontrol owania dostępu do obiektu, lub do utworzenia go dopiero w momencie, gdy będzie on używany. Pełnomocnik  należy  do strukturalnych wzorców projektowych. Więcej o rodzajach wzorców można poczytać tutaj [under construction]. Przykład 1: Rozważmy aplikację, która ładuje obrazek z pamięci i wyświetla go na ekran: interface IImageDisplayer { void Display (); } class ImageDisplayer : IImageDisplayer { private string _path; private Image _image; public ImageDisplayer ( string path) { _path = path; _image = LoadImage(_path); } private Image LoadImage ( string path) { //ładujemy obrazek z dysku return new Image (); ...

[OOP] Na czym polega wzorzec projektowy Pyłek?

Wzorzec projektowy Pyłek służy do zmniejszania zużycia pamięci przesz aplikację poprzez współdzielenie przez wiele obiektów wspólnych zasobów. Pyłek  należy  do strukturalnych wzorców projektowych. Więcej o rodzajach wzorców można poczytać tutaj [under construction]. Rozważmy przykład prostej gry 2D. W grze tej pojawiają się postacie elfów i krasnoludów. Każdy obiekt postaci zawiera w sobie położenie na mapie, ilość punktów zdrowia oraz teksturę z obrazkiem. Zobaczmy kod: abstract class Sprite { protected abstract string TextureLocation { get ; } protected Texture _texture; public Sprite () { _texture = Texture.Load(TextureLocation); } public int X { get ; set ; } public int Y { get ; set ; } public int HealthPoints { get ; set ; } } class Elf : Sprite { protected override string TextureLocation => ...

[OOP] Na czym polega wzorzec projektowy Fasada?

Wzorzec Fasada polega na zdefiniowaniu uproszczonego interfejsu do złożonego systemu , w sposób eksponujący pewien aspekt tego systemu. Fasada  należy  do strukturalnych wzorców projektowych. Więcej o rodzajach wzorców można poczytać tutaj [under construction]. Przykład 1. Wyobraźmy sobie "inteligentny" dom. Budynek jest nafaszerowany różnego rodzaju czujnikami, na przykład: czujnik statusu okien (otwarte/zamknięte, zasunięte/odsunięte rolety) czujnik temperatury czujnik wilgotności czujnik zapasu paliwa do pieca czujnik w lodówce, mówiący ile mamy jedzenia czujnik w pralni, mówiący ile mamy proszku do prania w zapasie czujnik mówiący ile energii elektrycznej zużywamy w tym momencie i tak dalej Firma która wybudowała nasz dom udostępnia nam jego API. API to wygląda w ten sposób: interface IHouse { //jedzenie int GetTotalKcalStored (); DateTime GetExpirationDate (FoodProduct p); void OrderFoodDelivery ...

[OOP] Ma czym polega wzorzec projektowy Kompozyt?

Wzorzec projektowy Kompozyt pozwala nam na używanie w jednolity sposób zarówno pojedynczych obiektów, jak i całych ich grup . Kompozyt należy  do strukturalnych wzorców projektowych. Więcej o rodzajach wzorców można poczytać tutaj [under construction]. Rozważmy program, którego zadaniem jest rysowanie na ekranie obiektów. Możemy zdecydować, czy narysuje się kwadrat, kółko, albo też obrazek w dowolnym formacie. Chcemy też by użytkownik miał możliwość narysowania całej grupy obiektów - utworzonej przez niego kompozycji kwadratów, kółek itp. Zacznijmy pisać program. Chcemy, żeby każdy obiekt, który może zostać narysowany na ekranie, implementował interfejs IDrawable . Utwórzmy ten interfejs oraz kilka klas go implementujących. interface IDrawable { void Draw (); } class Circle : IDrawable { public void Draw () { Console.WriteLine( "Rysuję kółko" ); } } class Square : IDrawab...

[OOP] Ma czym polega wzorzec projektowy Most?

Most jest wzorcem projektowym, który pozwala nam uprościć hierarchię klas odseparowując od siebie pewne aspekty tych klas. By to lepiej zrozumieć rozważmy prosty przykład: chcemy napisać program zajmujący się pojazdami - wstępnie samochodami i motorami. Piszemy prostą hierarchię klas. class Vehicle { } class Car : Vehicle { } class Motorcycle : Vehicle { } Na razie wszystko jest w porządku, a hierarchia wygląda tak: Z czasem jednak pojawia się potrzeba reprezentowania w programie samochodów i motorów elektrycznych. Nasza hierarchia klas bardzo się rozrasta: class Vehicle { } class Car : Vehicle { } class ElectricCar : Car { } class CombustionCar : Car { } class Motorcycle : Vehicle { } class ElectricMotorcycle : Motorcycle { } class CombustionMotorcycle : Motorcycle { } Diag...

[OOP] Na czym polega wzorzec projektowy Adapter?

Wzorzec projektowy adapter umożliwia współpracę klasom o niekompatybilnych interfejsach. Jest to strukturalny wzorzec projektowy. Więcej o typach wzorców można poczytać tutaj [under construction]. Adapter czasem nazywany jest wrapperem . Rozważmy problem gniazdek elektrycznych. W różnych częściach świata używane są rożne ich rodzaje. Polskiej wtyczki nie możemy używać w Stanach Zjednoczonch - nie będzie pasowała do gniazdka. Nie oznacza to, że w Stanach nie możemy używać polskich sprzętów. Wystarczy, że kupimy przejściówkę - czyli właśnie adapter. Stanowi on łącznik między niekompatybilnymi interfejsami - polską wtyczką i amerykańskim gniazdkiem. Adaptery programistyczne działają na tej samej zasadzie. Przyjrzyjmy się kilku przykładom. Przykład 1. Wyobraźmy sobie, że piszemy aplikację dla policji. Policjanci prowadząc sprawy przestępstw zbierają od świadków i z monitoringu dane samochodów, których użyli przestępcy. Jeśli uda się odczytać rejestrację, to znalezienie właścic...