Definisi: Perluas fungsionalitas objek secara dinamis tanpa harus mengubah file asli dan menggunakan warisan. Itu membungkus objek nyata dengan membuat objek pembungkus, yaitu dekorasi.
Fitur:
(1) Objek dekoratif dan benda nyata memiliki antarmuka yang sama. Dengan cara ini objek klien dapat berinteraksi dengan objek dekoratif dengan cara yang sama seperti objek nyata.
(2) Objek dekoratif berisi referensi ke objek nyata
(3) Objek dekoratif menerima semua permintaan dari klien. Ini meneruskan permintaan ini ke objek nyata.
(4) Objek dekoratif dapat menambahkan beberapa fungsi tambahan sebelum atau setelah meneruskan permintaan ini. Ini memastikan bahwa saat runtime, fungsi tambahan dapat ditambahkan secara eksternal tanpa memodifikasi struktur objek yang diberikan. Dalam desain yang berorientasi objek, ekstensi fungsional ke kelas tertentu biasanya dicapai melalui warisan.
Aplikasi dalam pengembangan tingkat perusahaan dan kerangka kerja yang umum digunakan: IO streaming arsitektur yang mendasari
komposisi:
(1) Peran komponen abstrak: Berikan antarmuka abstrak untuk mengatur objek yang siap menerima tanggung jawab tambahan.
(2) Peran komponen konkret: Tentukan kelas yang akan menerima tanggung jawab tambahan.
(3) Peran dekorator: Memegang instance objek komponen dan mengimplementasikan antarmuka yang konsisten dengan antarmuka komponen abstrak.
(4) Peran dekorator beton: Bertanggung jawab untuk menambahkan tanggung jawab tambahan ke objek komponen.
Contoh spesifik:
/*** Contoh -contoh rumah dekorasi berikut*/Demo kelas publik {public static void main (string [] args) {generichouse house = new generichouse (); Garasi garasi = garasi baru (rumah); Garage.Dosomething (); Dapur dapur = dapur baru (rumah); dapur.dosomething (); }}/*** Peran komponen abstrak: Antarmuka untuk mengatur lokasi dekorasi spesifik*/antarmuka abstracthouse {public void dosomething ();}/*** Peran dekoratif: Tahan objek yang akan didekorasi*/class master mengimplementasikan abstracthouse {private abstracthouse abstracthouse; master publik (Abstracthouse Abstracthouse) {this.abstracthouse = Abstracthouse; } public void dosomething () {System.out.println ("Peran dekoratif: pemegang peran dekoratif, berikut adalah pemilik rumah"); abstracthouse.dosomething (); }}/*** Peran komponen spesifik: Objek spesifik yang perlu didekorasi*/kelas generik. }}/*** Peran dekoratif spesifik: Dekorasi spesifik dibuat di sini, dan mewarisi dari peran dekoratif. Karena peran dekoratif memegang objek dekoratif, * sehingga juga memegang objek dekoratif dan dapat didekorasi */kelas garasi memperluas master {garasi publik (Abstracthouse Abstracthouse) {Super (Abstracthouse); } public void dosomething () {super.dosomething (); System.out.println ("Peran dekoratif spesifik: lakukan dekorasi di sini, hiasi salah satu rumah menjadi garasi, sehingga rumah dapat menyimpan mobil"); }}/*** Peran dekoratif spesifik: Dekorasi spesifik dibuat di sini, ia mewarisi dari peran dekoratif, karena peran dekoratif memegang objek dekoratif,* sehingga juga memegang objek dekoratif dan dapat didekorasi*/dapur kelas memperluas {dapur publik (abstracthouse abstracthouse) {super (abstracthouse); } public void dosomething () {super.dosomething (); System.out.println ("Peran dekoratif spesifik: lakukan dekorasi di sini, hiasi salah satu rumah menjadi dapur, sehingga rumah bisa memasak"); }}Dalam pengembangan yang sebenarnya, fungsi pengemasan dekorasi pola memainkan peran yang bagus. Kita dapat melakukan beberapa operasi lain pada objek tanpa mengubah objek asli, yang dapat mencegah kita mengubah objek, tetapi pada saat yang sama kita dapat menyelesaikan beberapa operasi dengan baik.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.