Desain negara Pola

chmood

   Memungkinkan sebuah objek untuk mengubah perilakunya ketika perubahan internal negara. Objek akan muncul untuk mengubah kelasnya.
Sebuah mesin negara berorientasi objek
wrapper + wrappee polimorfik + kolaborasi

   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.




Komentar