Composite Pattern adalah Design Pattern yang digunakan dimana kita perlu memperlakukan sekelompok objek, dimana sekelompok objek tersebut diperlakukan dengan cara yang sama, seperti memperlakukan objek tunggal. Composite Pattern menyusun Object Composit dalam bentuk setruktur untuk menyatakan bagian dari keseluruhan hierarki.
Object Composite adalah objek yang terdiri dari objek - objek lain. Misalanya, Sebuah organisasi perusahaan dapat terdiri dari Ceo, Manager, dan karywan. Nah, Organisasi perusahaan ini kita bisa sebut sebagai Object Composite. Sedangkan Ceo, Manager dan karyawan merupakan objek anggota dari object Composite tersebut.
Contoh Implementasi
Disini, Class Karyawan merupakan class yang bertindak sebagai class Composite. Kemudian pada class Test digunakan untuk mengelola hierarki anggota karyawan dan mencetak semua karyawan.
Note : Bagi pengguna mobile, mohon aktifkan JavaScript dan matikan fitur Google Web Light untuk melihat kode berikut secara keseluruhan.
1. Buat class Karyawan.java
package main; import java.util.*; public class Karyawan { private String nama; private String pangkat; private int gaji; private List< Karyawan > subordinates; public Karyawan(String nama, String pangkat, int gaji){ this.nama = nama; this.pangkat = pangkat; this.gaji = gaji; subordinates = new ArrayList< Karyawan >(); } public void add(Karyawan add){ subordinates.add(add); } public void remove(Karyawan remove){ subordinates.remove(remove); } public List< Karyawan > getSubordinates(){ return subordinates; } @Override public String toString(){ return (" Nama : " + nama + ", Pangkat : " + pangkat + ", Gaji : Rp " + gaji+""); } }
2. Buat class Test.java
package main; public class Test { public static void main(String[] args){ Karyawan ceo = new Karyawan("Agung Gumelar","CEO",50000000); Karyawan headSales = new Karyawan("Arif", "Head Sales",5000000); Karyawan headMarketing = new Karyawan("Budi","Head Marketing",5000000); Karyawan marketing1 = new Karyawan("Andri","Marketing",3000000); Karyawan marketing2 = new Karyawan("Luna","Marketing",3000000); Karyawan sales1 = new Karyawan("Inka","Sales",3000000); Karyawan sales2 = new Karyawan("Novi","Sales",3000000); ceo.add(headSales); ceo.add(headMarketing); headMarketing.add(marketing1); headMarketing.add(marketing2); headSales.add(sales1); headSales.add(sales2); System.out.println(ceo); for(Karyawan headKaryawan : ceo.getSubordinates()){ System.out.println(); System.out.println(headKaryawan); for(Karyawan Karyawan : headKaryawan.getSubordinates()){ System.out.println(" - "+Karyawan); } } } }
3. Verifikasi Output
Nama : Agung Gumelar, Pangkat : CEO, Gaji : Rp 50000000 Nama : Arif, Pangkat : Head Sales, Gaji : Rp 5000000 - Nama : Inka, Pangkat : Sales, Gaji : Rp 3000000 - Nama : Novi, Pangkat : Sales, Gaji : Rp 3000000 Nama : Budi, Pangkat : Head Marketing, Gaji : Rp 5000000 - Nama : Andri, Pangkat : Marketing, Gaji : Rp 3000000 - Nama : Luna, Pangkat : Marketing, Gaji : Rp 3000000
Baca Juga :
Entri Sebelumnya :
Java Bridge Pattern
No comments:
Post a Comment