Latest web development tutorials

tryb kombinowany

kombinowanego (Composite deseń), znany również jako część ogólnego wzoru dla grupy podobnych przedmiotów jako pojedynczy przedmiot. Kombinacja wzór opiera się na strukturze drzewa połączyć obiekt, który reprezentuje część i ogólny poziom. Tego rodzaju wzorców projektowych należą modelu strukturalnego, tworzy strukturę drzewa grupy docelowej.

Ten wzór tworzony klasa zawiera swoją własną grupę obiektów. Klasa ta oferuje możliwość modyfikacji tej samej grupy obiektów.

My w poniższych przykładach w celu wykazania zastosowania kombinacji trybów. Przykłady pokazują hierarchię pracowników w organizacji.

wprowadzenie

Zamiar: Tworzenie obiektów w strukturach drzew do reprezentowania "część - całość" hierarchii.Tryb kombinowany pozwala użytkownikowi na korzystanie z jednego przedmiotu oraz kompozycje obiektów równomiernie.

Głównie do rozwiązania: To jest problem naszego drzewa, zacierając koncepcję prostych elementów i złożonych elementów, klient może obsługiwać elementy tak proste w obsłudze skomplikowanych elementów, tak że wewnętrzna struktura oddzielenia złożonych elementów klientem.

Kiedy stosować: 1, przedmiotem chcesz stanowią część - cała hierarchia (drzewo).2, chcesz różnych użytkowników, aby zignorować połączenie obiektów z jednego obiektu, użytkownik zostanie połączony jednolitą strukturę dla wszystkich obiektów.

Jak naprawić: gałęzie i liście, aby osiągnąć jednolity interfejs, interfejs jest połączenie oddziałów wewnętrznych.

Kod klawisza: Drewno wewnętrzny skład interfejsu i zawiera zestawienia cech wewnętrznych, które umieścić komponent.

Przykłady zastosowań: 1, wyrażeń arytmetycznych tym operandów, operatorów i drugiego argumentu, który może być inna operacja drzewa operator, operatorzy i inne argumentu.2, JAVA AWT i SWING na przycisk i pole wyboru są liście, drzewa Pojemnik oddziału.

Zalety: 1, moduł wysokiego poziomu wywołuje proste.2, węzeł zwiększyła wolność.

Wady: Podczas korzystania z trybu szyfrowy, liście i gałęzie są wykonawcze deklarację klasy, zamiast interfejsów, z naruszeniem Dependency Inversion zasady.

Scenariusze wykorzystania: część ogólna sceny, takie jak menu drzewa, plików, zarządzanie folderu.

Uwaga: Podczas definiowania konkretną kategorię.

realizacja

Mamypracownikaklasyklasajest traktowana jako połączenie klasy modelu.CompositePatternDemo pokazujemyużycie classEmployeedodać hierarchię oddziału i wydruki wszystkich pracowników.

Kombinacja wzór diagram UML

Etap 1

Tworzenie klasypracownika,klasę z listą obiektówpracownika.

Employee.java

import java.util.ArrayList;
import java.util.List;

public class Employee {
   private String name;
   Dział private String;
   private int wynagrodzenia;
   private List <pracownicze> podwładnych;

   // Konstruktor urzędnik publiczny (String name, dept String, int sal) {
      this.name = nazwa;
      this.dept = dept;
      this.salary = sal;
      podwładni = new ArrayList <Employee> ();
   }

   public void add (Employee e) {
      subordinates.add (e);
   }

   public void remove (Employee e) {
      subordinates.remove (e);
   }

   public List <Employee> getSubordinates () {
     powrót podwładnych;
   }

   public String toString () {
      Return ( "Employee: [nazwa:" + nazwa 
      + ", Dept:" + dept + "wynagrodzenia"
      Pensja + + "]");
   }   
}

Etap 2

Użyj klasyEmployeetworzyć i drukować hierarchii pracowników.

CompositePatternDemo.java

{public class CompositePatternDemo
   public static void main (String [] args) {
      CEO pracownika = nowy pracownik ( "Jan", "CEO", 30000);

      headSales pracownicze = nowy pracownik ( "Robert", "kierownik sprzedaży", 20000);

      Pracownik headMarketing = nowy pracownik ( "Michel", "kierownik marketingu", 20000);

      clerk1 pracownika = nowy pracownik ( "Laura", "Marketing", 10000);
      clerk2 pracownika = nowy pracownik ( "Bob", "Marketing", 10000);

      Pracownik salesExecutive1 = new pracownika ( "Richard", "Sprzedaż", 10000);
      Pracownik salesExecutive2 = nowy pracownik ( "Rob", "Sprzedaż", 10000);

      CEO.add (headSales);
      CEO.add (headMarketing);

      headSales.add (salesExecutive1);
      headSales.add (salesExecutive2);

      headMarketing.add (clerk1);
      headMarketing.add (clerk2);

      // Wyświetlamy wszystkich pracowników System.out.println organizacji (CEO); 
      dla (Employee headEmployee: CEO.getSubordinates ()) {
         System.out.println (headEmployee);
         dla pracowników (Employee: headEmployee.getSubordinates ()) {
            System.out.println (pracownika);
         }
      }		
   }
}

etap 3,

Sprawdź, czy wyjście.

Pracownik: [Imię i nazwisko: Jan, Dział: CEO, wynagrodzenie: 30000]
Pracownik: [Imię i nazwisko: Robert, Dział: Kierownik Sprzedaży, Wynagrodzenie: 20000]
Pracownik: [Imię i nazwisko: Richard, dept: Sprzedaż, Wynagrodzenie: 10000]
Pracownik: [Nazwa: Rob, dept: Sprzedaż, Wynagrodzenie: 10000]
Pracownik: [Nazwa: Michel, Dział: Kierownik Marketingu, Wynagrodzenie: 20000]
Pracownik: [Nazwa: Laura, Dział: Marketing, Wynagrodzenie: 10000]
Pracownik: [Nazwa: Bob, Dział: Marketing, Wynagrodzenie: 10000]