Latest web development tutorials

modus dikombinasikan

Mode gabungan (Pola Composite), juga dikenal sebagai bagian dari pola keseluruhan untuk sekelompok objek serupa sebagai objek tunggal. pola kombinasi berdasarkan struktur pohon untuk menggabungkan objek yang mewakili bagian dan tingkat keseluruhan. Jenis pola desain milik model struktural, menciptakan struktur pohon dari kelompok sasaran.

Pola ini dibuat kelas berisi kelompok sendiri objek. Kelas ini menyediakan cara untuk memodifikasi kelompok objek yang sama.

Kami dengan contoh berikut untuk menunjukkan penggunaan kombinasi mode. Contoh menunjukkan hirarki karyawan dalam suatu organisasi.

pengenalan

Maksud: Susun objek ke dalam struktur pohon untuk mewakili "bagian - seluruh" hirarki.Modus dikombinasikan memungkinkan pengguna untuk menggunakan satu objek dan komposisi benda seragam.

Terutama untuk mengatasi: Ini masalah dari pohon kita, mengaburkan konsep unsur-unsur sederhana dan elemen kompleks, klien dapat menangani elemen yang sederhana untuk menangani elemen kompleks, sehingga struktur internal decoupling klien dan elemen kompleks.

Kapan menggunakan: 1, objek yang ingin untuk mewakili bagian - seluruh hirarki (pohon).2, Anda ingin pengguna yang berbeda untuk mengabaikan kombinasi objek dengan objek tunggal, pengguna akan dikombinasikan struktur terpadu untuk semua objek.

Cara untuk memperbaiki: cabang dan daun untuk mencapai antarmuka yang seragam, antarmuka adalah kombinasi dari cabang internal.

Kode kunci: Kayu komposisi internal antarmuka, dan berisi Daftar atribut internal, yang menempatkan Komponen.

contoh aplikasi: 1, ekspresi aritmatika termasuk operan, operator, dan operan lain, yang mungkin operasi lagi pohon operator, operator, dan operan lainnya.2, JAWA AWT dan SWING, untuk Button dan Checkbox adalah daun, ranting pohon Kontainer.

Keuntungan: 1, modul-tingkat tinggi panggilan sederhana.2, simpul meningkatkan kebebasan.

Cons: Saat menggunakan mode kombinasi, daun dan cabang menerapkan deklarasi kelas, bukannya antarmuka, melanggar Pembalikan Prinsip Ketergantungan.

skenario penggunaan: bagian, adegan keseluruhan, seperti menu tree, berkas, manajemen folder.

Catatan: Ketika anda mendefinisikan suatu kategori tertentu.

realisasi

Kami memilikikaryawan kelas,kelas diperlakukan sebagai kombinasi dari kelas model.CompositePatternDemo,kita menunjukkan penggunaan kelas kelaskaryawanuntuk menambahkan hirarki departemen dan mencetak semua karyawan.

Kombinasi pola diagram UML

Langkah 1

Buat kelaskaryawan,kelas dengan daftar objekKaryawan.

Employee.java

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

public class Employee {
   private String nama;
   String dept swasta;
   private int gaji;
   swasta List <Karyawan> bawahan;

   // Konstruktor Karyawan publik (String nama, String dept, int sal) {
      this.name = nama;
      this.dept = dept;
      this.salary = sal;
      bawahan = new ArrayList <Employee> ();
   }

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

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

   publik Daftar <Karyawan> getSubordinates () {
     kembali bawahan;
   }

   String public toString () {
      kembali ( "Karyawan: [Nama:" + nama 
      + ", Dept:" + dept + ", gaji:"
      + Gaji + "]");
   }   
}

Langkah 2

Menggunakan kelaskaryawanuntuk membuat dan mencetak hirarki karyawan.

CompositePatternDemo.java

public class CompositePatternDemo {
   public static void main (String [] args) {
      CEO karyawan = new Karyawan ( "John", "CEO", 30000);

      headSales karyawan = new Karyawan ( "Robert", "Kepala Penjualan", 20000);

      Karyawan headMarketing = new Karyawan ( "Michel", "Kepala Pemasaran", 20000);

      clerk1 karyawan = new Karyawan ( "Laura", "Pemasaran", 10000);
      clerk2 karyawan = new Karyawan ( "Bob", "Pemasaran", 10000);

      salesExecutive1 karyawan = new Karyawan ( "Richard", "Penjualan", 10000);
      salesExecutive2 karyawan = new Karyawan ( "Rob", "Penjualan", 10000);

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

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

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

      // Cetak semua organisasi karyawan System.out.println (CEO); 
      untuk (headEmployee Karyawan: CEO.getSubordinates ()) {
         System.out.println (headEmployee);
         untuk (karyawan Karyawan: headEmployee.getSubordinates ()) {
            System.out.println (karyawan);
         }
      }		
   }
}

Langkah 3

Verifikasi output.

Karyawan: [Nama: John, dept: CEO, Gaji: 30000]
Karyawan: [Nama: Robert, dept: Kepala Penjualan, gaji: 20000]
Karyawan: [Nama: Richard, dept: Penjualan, gaji: 10000]
Karyawan: [Nama: Rob, dept: Penjualan, gaji: 10000]
Karyawan: [Nama: Michel, dept: Kepala Pemasaran, gaji: 20000]
Karyawan: [Nama: Laura, dept: Pemasaran, gaji: 10000]
Karyawan: [Nama: Bob, dept: Pemasaran, gaji: 10000]