Strategi Desain Pola
Oleh
chmood
Strategi Desain Pola
Maksud
Mendefinisikan keluarga algoritma, merangkum masing-masing, dan membuat mereka saling dipertukarkan. Strategi memungkinkan algoritma bervariasi secara independen dari klien yang menggunakannya.
Menangkap abstraksi dalam sebuah antarmuka, mengubur rincian pelaksanaan di kelas turunan.
Masalah
Salah satu strategi dominan desain berorientasi objek adalah "prinsip terbuka-tertutup".
Gambar menunjukkan bagaimana hal ini secara rutin dicapai - merangkum rincian antarmuka di kelas dasar, dan mengubur rincian pelaksanaan di kelas turunan. Klien kemudian dapat pasangan sendiri untuk sebuah antarmuka, dan tidak perlu mengalami pergolakan terkait dengan perubahan: tidak berdampak ketika jumlah berasal perubahan kelas, dan tidak ada dampak saat pelaksanaan perubahan kelas turunan.
Maksud
Mendefinisikan keluarga algoritma, merangkum masing-masing, dan membuat mereka saling dipertukarkan. Strategi memungkinkan algoritma bervariasi secara independen dari klien yang menggunakannya.
Menangkap abstraksi dalam sebuah antarmuka, mengubur rincian pelaksanaan di kelas turunan.
Masalah
Salah satu strategi dominan desain berorientasi objek adalah "prinsip terbuka-tertutup".
Gambar menunjukkan bagaimana hal ini secara rutin dicapai - merangkum rincian antarmuka di kelas dasar, dan mengubur rincian pelaksanaan di kelas turunan. Klien kemudian dapat pasangan sendiri untuk sebuah antarmuka, dan tidak perlu mengalami pergolakan terkait dengan perubahan: tidak berdampak ketika jumlah berasal perubahan kelas, dan tidak ada dampak saat pelaksanaan perubahan kelas turunan.
Nilai generik komunitas perangkat lunak untuk tahun telah, "memaksimalkan kohesi dan meminimalkan coupling". Berorientasi objek pendekatan desain yang ditunjukkan pada gambar adalah semua tentang meminimalkan kopling. Sejak klien digabungkan hanya untuk sebuah abstraksi (yaitu fiksi berguna), dan bukan realisasi tertentu abstraksi itu, klien bisa dikatakan berlatih "coupling abstrak". varian berorientasi objek dari nasihat yang lebih umum "meminimalkan coupling".
Sebuah karakterisasi lebih populer dari ini "coupling abstrak" prinsip adalah "Program untuk sebuah antarmuka, bukan sebuah implementasi".
Klien harus memilih "tingkat tambahan tipuan" bahwa antarmuka (atau kelas dasar abstrak) affords. Antarmuka menangkap abstraksi (yaitu "fiksi yang berguna") yang diinginkan klien untuk latihan, dan implementasi dari antarmuka yang efektif tersembunyi......
Sebuah karakterisasi lebih populer dari ini "coupling abstrak" prinsip adalah "Program untuk sebuah antarmuka, bukan sebuah implementasi".
Klien harus memilih "tingkat tambahan tipuan" bahwa antarmuka (atau kelas dasar abstrak) affords. Antarmuka menangkap abstraksi (yaitu "fiksi yang berguna") yang diinginkan klien untuk latihan, dan implementasi dari antarmuka yang efektif tersembunyi......
Struktur
Entitas Antarmuka bisa mewakili baik kelas dasar abstrak, atau harapan metode tanda tangan oleh klien. Dalam kasus yang pertama, hirarki warisan merupakan polimorfisme dinamis. Dalam kasus terakhir, entitas Antarmuka merupakan kode template di klien dan hirarki warisan merupakan polimorfisme statis.
Entitas Antarmuka bisa mewakili baik kelas dasar abstrak, atau harapan metode tanda tangan oleh klien. Dalam kasus yang pertama, hirarki warisan merupakan polimorfisme dinamis. Dalam kasus terakhir, entitas Antarmuka merupakan kode template di klien dan hirarki warisan merupakan polimorfisme statis.
Contoh
Strategi mendefinisikan satu set algoritma yang dapat digunakan secara bergantian. Moda transportasi ke bandara adalah contoh dari Strategi a. Ada beberapa opsi seperti mengemudi mobil sendiri, mengambil taksi, antar-jemput bandara, bus kota, atau layanan limusin. Untuk beberapa bandara, kereta bawah tanah dan helikopter juga tersedia sebagai moda transportasi ke bandara. Setiap mode transportasi akan mendapatkan wisatawan ke bandara, dan mereka dapat digunakan secara bergantian. Wisatawan harus memilih strategi berdasarkan timbal balik antara biaya, kenyamanan, dan waktu.
Strategi mendefinisikan satu set algoritma yang dapat digunakan secara bergantian. Moda transportasi ke bandara adalah contoh dari Strategi a. Ada beberapa opsi seperti mengemudi mobil sendiri, mengambil taksi, antar-jemput bandara, bus kota, atau layanan limusin. Untuk beberapa bandara, kereta bawah tanah dan helikopter juga tersedia sebagai moda transportasi ke bandara. Setiap mode transportasi akan mendapatkan wisatawan ke bandara, dan mereka dapat digunakan secara bergantian. Wisatawan harus memilih strategi berdasarkan timbal balik antara biaya, kenyamanan, dan waktu.
Mengidentifikasi sebuah algoritma (yaitu perilaku) bahwa klien akan lebih memilih untuk mengakses melalui "titik fleksibel".
Tentukan tanda tangan untuk itu algoritma dalam antarmuka.
Mengubur rincian implementasi alternatif dalam kelas turunan.
Klien dari algoritma pasangan sendiri untuk antarmuka.
Aturan praktis
Strategi seperti Metode Template kecuali dalam rincian nya.
Negara seperti Strategi kecuali dalam niat.
Strategi memungkinkan Anda mengubah keberanian dari sebuah objek. Dekorator memungkinkan Anda mengubah kulit.
Negara, Strategi, Bridge (dan untuk beberapa derajat Adapter) memiliki struktur solusi yang sama. Mereka semua elemen bagian dari 'pegangan / tubuh idiom. Mereka berbeda dalam maksud - yaitu, mereka memecahkan masalah yang berbeda.
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).
Strategi benda sering membuat flyweights baik.
Category
Komentar