Model de design compozit

Modelul de design compozit este un model important în API-ul Swing, care permite delegația automată a afișării componentelor diagramei la componentele în sine. De fapt, fiecare componentă grafică swing (de exemplu JButton) moștenește clasa abstractă JComponent, care are un set de metode care gestionează afișarea de bază și comportamentul tuturor componentelor grafice. Cu toate acestea, clasa abstractă jomfonent moștenește clasa de containere, care gestionează cuibarea componentelor grafice între ele, de exemplu, un JButton în interiorul unui jpanel care este în interior. Un JFRAME. Astfel, fiecare interfață grafică swing corespunde unui copac (sau arbore n-aire) al lui JComponent. În cazul în care „magia” modelului de design compozit intră în joc este, de exemplu, atunci când redimensionați un JFRAME. În acest moment, componentele grafice, printr-o coborâre în copac, sunt manipulate succesiv prin intermediul metodelor generice. Astfel, o modificare a unei componente din copac, determină modificarea componentelor „ramurii”. Astfel, modelul de design compozit constă, prin urmare, din definirea unei clase abstracte cu operațiuni. Generici la un grup de obiecte și care permite delegarea de funcționare a obiectelor în sine printr-un apel cascading. Compozitul este similar cu un alt model de proiectare, lanțul de responsabilitate. Imaginea de mai jos prezintă diagrama UML a modelului de proiectare.

Modelul UML al modelului de design compozit

aici este codul Java generic pentru implementarea acestor componente:

Interfață componentă

Interfața publică a componentelor {Operația publică ();}

Rețineți că interfața poate fi înlocuită de o clasă abstractă dacă există comportamente comune tuturor tipurilor de obiecte care doresc să fie implementate

Clasa compozită

la Reprezintă nodurile care pot avea componente sub-ierarhic.

Component compozit compozit din clasa publică . > (); @ Operațiunea publică publică publică () {// pentru a finaliza} Public VOID Adăugați (componenta c) {componente.add (c); } Void public eliminați (componenta c) {componente.remove (c); } Arraylist public < component > getComponents () {componente de întoarcere; }}

foaie de clasă sau frunză

pentru a reprezenta frunze sau noduri care nu pot avea componente sub-ierarhic.

 Implementarea compozitelor de clasă publică Componentă {@ ePoverride VOID Public Operation () {// pentru a fi finalizat}} 

Exemplu de model cu IHM

presupune o interfață grafică pentru controlul unei mașini industriale. În funcție de starea mașinii, unele comenzi sunt accesibile altceva nu sunt. Aceste state pot fi reprezentate într-o manieră „surprinzătoare” și providențială (de exemplu, evident, de un grafic aciclic (scurt un copac N-Aire). Prin urmare, vom folosi modelul de design compozit pentru a gestiona accesul la panoul de control, apelând metoda reținută. Iată o imagine de ansamblu a acestei interfețe grafice:

Exercițiu -Compozit

Leave a comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *