Desain negara Pola
Oleh
chmood
Memungkinkan sebuah objek untuk mengubah perilakunya ketika
perubahan internal negara. Objek akan muncul untuk mengubah kelasnya.
Sebuah mesin negara berorientasi objek
Sebuah perilaku objek monolitik adalah fungsi negara, dan
itu harus mengubah perilakunya saat run-time tergantung pada negara itu. Atau,
sebuah aplikasi characterixed oleh pernyataan kasus besar dan banyak yang
aliran vektor kontrol berdasarkan keadaan aplikasi.
Pola Negara adalah solusi untuk masalah bagaimana membuat
perilaku tergantung pada negara.
Mendefinisikan sebuah "konteks" kelas untuk
menyajikan antarmuka tunggal ke dunia luar.
Mendefinisikan suatu Negara kelas dasar abstrak.
Mewakili berbeda "negara" dari mesin negara
sebagai kelas turunan dari kelas dasar Negara.
Mendefinisikan perilaku-negara tertentu di kelas Negara
berasal sesuai.
Mempertahankan pointer ke saat "negara" dalam
"konteks" kelas.
Untuk mengubah keadaan mesin negara, mengubah arus
"negara" pointer.
Pola Negara tidak menentukan di mana transisi negara akan
ditentukan. Pilihannya adalah dua: "konteks" objek, atau
masing-masing Negara individu berasal kelas. Keuntungan dari pilihan terakhir
adalah kemudahan menambahkan kelas Negara berasal baru. Kelemahannya adalah
masing-masing kelas Negara berasal memiliki pengetahuan (coupling untuk)
saudara nya, yang memperkenalkan dependensi antara subclass.
Pendekatan meja-didorong untuk merancang mesin negara yang
terbatas melakukan pekerjaan yang baik dari menentukan transisi negara, tetapi
sulit untuk menambahkan tindakan untuk menemani transisi negara. Pendekatan
berbasis pola menggunakan kode (bukan struktur data) untuk menentukan transisi
negara, tetapi melakukan pekerjaan yang baik dari menampung tindakan transisi
negara.
Antarmuka mesin negara dirumuskan dalam "wrapper"
kelas. Antarmuka wrappee hirarki ini mencerminkan antarmuka pembungkus dengan
pengecualian satu parameter tambahan. Parameter tambahan memungkinkan kelas
wrappee berasal menelepon kembali ke kelas wrapper yang diperlukan.
Kompleksitas yang lain akan menyeret turun kelas wrapper adalah rapi
compartmented dan dikemas dalam hirarki polimorfik mana delegasi objek
pembungkus.
Pola Negara memungkinkan sebuah objek untuk mengubah
perilakunya ketika perubahan internal negara. Pola ini dapat diamati dalam
mesin penjual otomatis. Mesin penjual memiliki negara berdasarkan
inventarisasi, jumlah mata uang disimpan, kemampuan untuk membuat perubahan,
item yang dipilih, dll Ketika mata uang disimpan dan seleksi dibuat, mesin
penjual otomatis baik akan memberikan produk dan tidak ada perubahan,
memberikan produk dan perubahan, memberikan tidak ada produk karena mata uang
tidak cukup di deposito, atau memberikan tidak ada produk karena menipisnya
persediaan.
Mengidentifikasi kelas yang ada, atau membuat kelas baru,
yang akan berfungsi sebagai "mesin negara" dari perspektif klien.
Kelas yang adalah "wrapper" kelas.
Buat kelas dasar Negara yang mereplikasi metode antarmuka
mesin negara. Setiap metode mengambil satu parameter tambahan: sebuah instance
dari kelas wrapper. Kelas dasar Negara menentukan yang berguna
"default" perilaku.
Buat kelas Negara diturunkan untuk masing-masing negara
domain. Kelas-kelas yang diturunkan hanya menimpa metode yang mereka butuhkan
untuk menimpa.
Kelas wrapper mempertahankan "saat ini" objek
Negara.
Semua permintaan klien untuk kelas wrapper hanya
didelegasikan ke objek Negara saat ini, dan pembungkus objek pointer ini
dilewatkan.
Metode Negara mengubah "saat" negara dalam objek pembungkus
yang sesuai.
Benda negara sering lajang.
Kelas terbang menjelaskan kapan dan bagaimana objek Negara
dapat dibagi.
Interpreter dapat menggunakan Negara untuk menentukan
konteks parsing.
Strategi memiliki 2 implementasi yang berbeda, yang pertama
adalah serupa dengan Negara. Perbedaannya adalah di kali mengikat (Strategi
adalah pola mengikat-sekali, sedangkan Negara lebih dinamis).
Struktur Negara dan Bridge adalah identik (kecuali bahwa
Bridge mengakui hirarki kelas amplop, sedangkan Negara memungkinkan hanya
satu). Dua pola menggunakan struktur yang sama untuk memecahkan masalah yang
berbeda: Negara memungkinkan perilaku obyek untuk mengubah bersama dengan
keadaan, sementara niat Bridge adalah untuk memisahkan suatu abstraksi dari pelaksanaannya
sehingga dua dapat bervariasi secara independen.
Pelaksanaan pola Negara dibangun di atas pola Strategi.
Perbedaan antara Negara dan Strategi dalam maksud. Dengan Strategi, pilihan
algoritma cukup stabil. Dengan Negara, perubahan dalam keadaan "konteks"
objek menyebabkannya untuk memilih dari "palet" Strategi benda.
Category
Komentar