CATEGORII DOCUMENTE |
Sabloane de comportament
MEDIATOR
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 |
Vizualizari: 937
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved