programowanie obiektowe 14

background image

Wzorce

projektowe,

część II

background image

Przegląd zagadnień

Adapter
Fasada
Obserwator
Podsumowanie
Pytania sprawdzające
Laboratorium

background image

Adapter (1)

Adapter należy do wzorców

strukturalnych.
Zadaniem wzorca jest przetworzenie

interfejsu klasy w inny interfejs,

którego oczekuje Klient
Adapter umożliwia współpracę klasom

o niekompatybilnych interfejsach

background image

Adapter (2)

interface IstniejacyInterfejs {
void Metoda();
}
class Adaptacja {
public void ObcaMetoda() {
Console.WriteLine("Obca metoda zaadaptowana");
}}
class Adaptor : IstniejacyInterfejs {
public void Metoda() {
ad.ObcaMetoda();
}
private Adaptacja ad = new Adaptacja();
}
class Klient {
public void MetodaKlienta(IstniejacyInterfejs e1) {
e1.Metoda();
}}
class Glowna {
public static void Main() {
Klient gc = new Klient();
IstniejacyInterfejs e1 = new Adaptor();
gc.MetodaKlienta(e1);
}}

background image

Fasada

Jest on pomyślany jako środek dostępu

do złożonego systemu prezentujący na

zewnątrz uproszczony lub

uporządkowany interfejs

programistyczny.
Wzorzec ten definiuje interfejs

wyższego poziomu, sprawiający, że

łatwiej jest używać podsystemów.

background image

Fasada (2)

Dobrym przykładem zastosowania Fasady

jest aplikacja bankomatowa – od strony

urządzenia (bankomat) mamy

ograniczony dostęp do systemu

bankowego, obsługiwany przez

odpowiednie metody
Model Fasady jest dwuczęściowy

interfejs zewnętrzny, który wie, który z
podsystemów odpowiada za konkretne
zadanie i wyśle we właściwe miejsce żądanie
wykonania

podsystemy, przejmujące jedynie zadanie
zlecone przez interfejs zewnętrzny

background image

Obserwator (1)

Wzorzec obserwatora służy do

powiadamiania wielu obiektów

(obserwatorów) o zmianie w obiekcie –

przedmiocie obserwacji

interface Obserwator
{

void Informuj();

}

class Szpieg : Obserwator
{

public void Informuj()
{

Console.WriteLine("Wykrylem zmiane!");

}

}

interface Obserwowalny
{

void Dodaj(Obserwator o);

}

<<interface>

>

Obserwator

+ Informuj()

Szpieg

+ Informuj()

<<interface>

>

Obserwowaln

y

+

Dodaj(Obse
rwator)

background image

class Przedmiot : Obserwowalny
{

private ArrayList ListaObs;

public Przedmiot()
{

ListaObs = new ArrayList();

}

public void Dodaj(Obserwator o)
{

ListaObs.Add(o);

}

public void Powiadom()
{

foreach (Obserwator o in ListaObs)

o.Informuj();

}

private int d;

public int dane
{

get { return d; }

set { d = value; Powiadom(); }
}
}

Obserwator (2)

<<interface

>>

Obserwator

+ Informuj()

Szpieg

+ Informuj()

<<interface>

>

Obserwowaln

y

+

Dodaj(Obser
wator)

Przedmiot

background image

Podsumowanie

Ekspresowy przegląd wzorców

projektowych nie wyczerpuje

wszystkich możliwości – jest to jedynie

wstęp do bardzo ważnego zagadnienia

inżynierii oprogramowania
Omówione wzorce Adaptera i Fasady

pokazują, jak z małych części tworzyć

skomplikowane elementy, natomiast

na bazie Obserwatora można zapoznać

się z intuicją wzorca czynnościowego

background image

Pytania sprawdzające

Omów wzorzec Obserwatora.
W jaki sposób wzorzec Adaptera może

dostosować interfejs dla klasy Klienta?

background image

Laboratorium


Document Outline


Wyszukiwarka

Podobne podstrony:
programowanie obiektowe 14, c c++, c#
Wyklad 13-14, uwm wnt Mecha, SM 5, Programowanie obiektowe i strukturalne, Wykłady
Programowanie obiektowe(ćw) 1
Zadanie projekt przychodnia lekarska, Programowanie obiektowe
Programowanie obiektowe w PHP4 i PHP5 11 2005
Programowanie Obiektowe ZadTest Nieznany
Egzamin Programowanie Obiektowe Głowacki, Programowanie Obiektowe
Jezyk C Efektywne programowanie obiektowe cpefpo
Programowanie Obiektowe Ćwiczenia 5
Programowanie obiektowe(cw) 2 i Nieznany
programowanie obiektowe 05, c c++, c#
Intuicyjne podstawy programowania obiektowego0
Programowanie obiektowe, CPP program, 1
wyklad5.cpp, JAVA jest językiem programowania obiektowego
projekt01, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek
przeciazanie metod i operatorow, Programowanie obiektowe
projekt06, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek
projekt07, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek

więcej podobnych podstron