Perintah Desain Pola
Oleh
chmood
Maksud
Merangkum permintaan sebagai objek, sehingga membiarkan Anda parameterisasi klien dengan permintaan yang berbeda, antrian atau log permintaan, dan mendukung operasi undoable.
Mempromosikan "doa dari metode pada objek" status
objek penuh
Sebuah callback berorientasi objek
Masalah
Perlu mengeluarkan permintaan untuk objek tanpa mengetahui
apa-apa tentang operasi yang diminta atau penerima permintaan.
Perintah decouples objek yang memanggil operasi dari salah
satu yang tahu bagaimana melakukan itu. Untuk mencapai pemisahan ini, desainer
menciptakan kelas dasar abstrak yang memetakan penerima (obyek) dengan tindakan
(pointer ke fungsi anggota). Kelas dasar berisi metode mengeksekusi () yang
hanya menyebut tindakan pada penerima.
Semua klien benda Command memperlakukan setiap objek sebagai
"kotak hitam" dengan hanya menerapkan metode maya objek mengeksekusi
() setiap kali klien membutuhkan "layanan" objek.
Kelas Command memegang beberapa bagian dari: sebuah objek,
metode yang akan diterapkan ke objek, dan argumen yang akan berlalu ketika
metode ini diterapkan. "Mengeksekusi" metode Komando kemudian
menyebabkan potongan untuk datang bersama-sama.
Urutan objek Command dapat dirakit menjadi komposit (atau
makro) perintah.
Klien yang menciptakan perintah tidak klien yang sama yang
mengeksekusinya. Pemisahan ini memberikan fleksibilitas dalam waktu dan urutan
perintah. Mewujudkan perintah sebagai objek berarti mereka dapat lulus,
dipentaskan, bersama, dimuat dalam sebuah tabel, dan sebaliknya diinstrumentasi
atau dimanipulasi seperti benda lainnya.
Objek perintah dapat dianggap sebagai "token" yang
dibuat oleh salah satu klien yang tahu apa yang perlu dilakukan, dan diteruskan
ke klien lain yang memiliki sumber daya untuk melakukannya.
Pola Command memungkinkan permintaan untuk dikemas sebagai
objek, sehingga memungkinkan klien untuk diparameterisasi dengan permintaan
yang berbeda. "Check" di restoran adalah contoh dari pola Command.
Pelayan atau pelayan mengambil perintah atau perintah dari pelanggan dan
merangkum agar dengan menulis itu di cek. Order kemudian antri untuk order
masak singkat. Perhatikan bahwa pad dari "pemeriksaan" yang digunakan
oleh masing-masing pelayan tidak tergantung pada menu, dan karena itu mereka
dapat mendukung perintah untuk memasak banyak item yang berbeda.
Mendefinisikan antarmuka Command dengan metode tanda tangan
seperti mengeksekusi ().
Membuat satu atau lebih kelas turunan yang merangkum
beberapa subset dari: a "penerima" objek, metode untuk memohon,
argumen untuk lulus.
Instantiate objek Command untuk setiap permintaan eksekusi
ditangguhkan.
Lulus objek Command dari pencipta (alias pengirim) ke
Invoker (alias penerima).
Invoker memutuskan kapan untuk mengeksekusi ().
Rantai Tanggung Jawab, Command, Mediator, dan Observer,
membahas bagaimana Anda dapat memisahkan pengirim dan penerima, tetapi dengan
berbeda trade-off. Perintah biasanya menentukan koneksi pengirim-penerima
dengan subclass.
Rantai Tanggung Jawab dapat menggunakan Command untuk
mewakili permintaan sebagai objek.
Perintah dan Memento bertindak sebagai token sihir untuk
diedarkan dan dipanggil di lain waktu. Dalam Command, token mewakili
permintaan; di Memento, itu merupakan keadaan internal suatu objek pada waktu
tertentu. Polimorfisme adalah penting untuk Command, tetapi tidak untuk Memento
karena interface-nya begitu sempit bahwa kenang-kenangan hanya bisa dilalui
sebagai nilai.
Perintah dapat menggunakan Memento untuk mempertahankan
negara diperlukan untuk operasi undo.
MacroCommands dapat diimplementasikan dengan Composite.
Sebuah Command yang harus disalin sebelum ditempatkan pada
daftar riwayat bertindak sebagai Prototype a.
Dua aspek penting dari pola Command: pemisahan interface
(Invoker yang diisolasi dari penerima), pemisahan waktu (toko siap-untuk-pergi
memproses permintaan itu akan dinyatakan kemudian).
Category
Komentar