Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Sabloane de comportament

baze de date



+ Font mai mare | - Font mai mic



Sabloane    de comportament



MEDIATOR

  • Se implementeaza cu ajutorul unei clase centrale- Mediator- ce intermediaza comunicatiile complexe intre mai multe clase ("Colegi");
  • Util in situatiile in care comunicarea nu poate fi modelata cu Observer;
  • Asigura o cuplare mult mai lejera intre clasele implicate, devenind singura clasa care contine informatii detaliate despre metodele celorlalte clase;
  • Clasele afectate de schimbari informeaza Mediatorul, iar acesta informeaza la randul sau clasele interesate de aceste schimbari;
  • La eventuale extinderi ale programului, Mediatorul este singura clasa ce trebuie modificata;
  • Cele mai comune aplicatii ale Mediatorului sunt programele cu interfata vizuala.

Diagrama.

Exemple.

1. (J.Cooper)

Fie un program cu cateva butoane, doua liste si un camp de text:

La inceperea programului, butoanele Copy si Clear sunt dezactivate.

1. La selectarea unui nume din lista din stanga, acesta e copiat in campul de text pentru editare si se activeaza butonul Copy.

2. La activarea lui Copy, textul se adauga in lista din dreapta, si se activeaza butonul Clear.

La activarea lui Clear, lista din dreapta si campul de text sunt sterse, lista si cele doua butoane se dezactiveaza.

Diagrama de interactiuni intre controalele grafice

Prin folosirea Mediatorului schema de interactiuni se simplifica dupa modelul:

Codul sursa

Diferenta principala la scrierea unui program folosind clasa Mediator este ca toate clasele trebuie sa stie despre aceasta. Se creaza de la inceput o instanta a mediatorului care este trimisa ca parametru in constructorii claselor Colegi.

Mediator med = new Mediator();

kidList = new KidList( med);

tx = new KTextField(med);

Move = new MoveButton(this, med);

Clear = new ClearButton(this, med);

med.init();

Cele doua butoane folosesc sablonul Command si "se inregistreaza" la Mediator in timpul initializarii lor. Iata butonul Copy:

public class CopyButton extends JButton implements Command

public void Execute()

Butonul Clear este analog.

O clasa speciala pentru datele din lista din stanga:

public class KidData

s = f.readLine();

public Enumeration elements()

public class KidList extends JawtList implements ListSelectionListener

public void valueChanged(ListSelectionEvent ls)

private void fillKidList()

Campul de text:

public class KTextField extends JTextField

Clasa Mediator contine metodele Copy, Clear si Select, si are metode de inregistrare a fiecarui control grafic:

public class Mediator

public void Clear()

public void Select()

//-----------copy in controls----- ----- ----- ----- -----

public void registerClear(ClearButton cb)

public void registerCopy(CopyButton mv)

public void registerText(KTextField tx)

public void registerPicked(PickedKidsList pl)

public void registerKidList(KidList kl)

Initializarea sistemului

La lansarea programului fiecare control trebuie sa se afle intr-o stare implicita. Metoda init a Mediatorului seteaza aceasta stare:

public void init()

Tema 5. Scrieti un program bazat pe sablonul Mediator ce implementeaza o fereastra cu o lista de nume, un camp de text si trei butoane: "Insereaza", "Modifica" si "Sterge". Initial lista este vida si singurul buton activ este "Insereaza". Butonul permite inserarea in lista a sirului introdus in campul de text. Butoanele "Sterge" (permite stergerea sirului selectat) si "Modifica" (permite inlocuirea sirului selectat cu cel introdus in campul de text) se activeaza numai cand un element din lista este selectat.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 848
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved