Mode strategi pemrograman mode Delphi
Liu Yi
1.1 Penjelasan modus
Tujuan dari pola Strategi adalah untuk mendefinisikan sekumpulan algoritme dan merangkum setiap algoritme ke dalam kelas independen dengan antarmuka umum sehingga dapat diganti satu sama lain. Pola Strategi memungkinkan perubahan algoritma secara independen dari klien yang menggunakannya. Untuk memahami motivasi dan pentingnya penggunaan Pola Strategi, kita harus memulai dengan sebuah contoh yang menarik. Dalam sistem manajemen material, modul keluar dan masuk adalah bagian inti dari sistem (kita akan mengambil keluar sebagai contoh untuk analisis di bawah). Untuk pemrogram yang tidak memiliki pengalaman dalam pemrograman berorientasi objek, mereka sering meletakkan semua logika pesanan keluar pada klien (antarmuka pesanan keluar), dan menggunakan pernyataan cabang bersyarat pada klien untuk menentukan apakah jenis pesanan keluar adalah memilih. meminjam bahan atau melaporkan kerugian, untuk memilih metode penyelesaian keluar yang berbeda, seperti yang ditunjukkan pada Gambar 1-1. Akibatnya, kode klien menjadi rumit dan sulit dipelihara. Misalnya: ketika Anda perlu menambahkan jenis perintah transfer baru dari gudang, Anda perlu mengubah kondisi penilaian, mengkompilasi ulang dan mempublikasikan klien. Ketika situasinya menjadi semakin kompleks, akan ada semakin banyak cabang bersyarat, dan semakin banyak kode program yang ditambahkan. Hal ini akan membuat klien menjadi lebih besar dan lebih sulit untuk dipelihara, dan kemungkinan saling mempengaruhi dan kesalahan akan meningkat . Gambar 1-1 Modul outbound dirancang berdasarkan pemikiran berorientasi proses. Jika dianalisis menggunakan pemikiran berorientasi objek, daftar pengambilan, daftar peminjaman, dan laporan kehilangan dapat dianggap sebagai kelas turunan dari catatan keluar, seperti yang ditunjukkan pada Gambar 1- 2 Pertunjukan. Dengan cara ini, dokumen keluar berfungsi sebagai kelas dasar dokumen untuk menyediakan antarmuka umum untuk dokumen, dan warisan digunakan untuk mengimplementasikan perilaku keluar yang berbeda dalam subkelas. Ini sebenarnya memanfaatkan konsep penting dalam berorientasi objek: polimorfisme. Namun masih terdapat kekurangan pada desain ini, yaitu lingkungan dan perilaku saling berkaitan erat. Dengan kata lain, dokumen dan algoritme keluar spesifik saling terkait erat. Kopling yang kuat mencegah keduanya berkembang secara independen, sehingga membatasi penggunaan kembali dan skalabilitas. Gambar 1-3 adalah modul keluar yang didesain ulang menggunakan pola strategi. Objek dokumen keluar mengacu pada objek kebijakan keluar melalui objek operasi keluar (yaitu, Konteks dalam mode strategi). Berbagai strategi outbound spesifik diimplementasikan oleh kelas turunan dari kelas strategi outbound. Dokumen keluar dapat menyediakan metode penyelesaian keluar dan antarmuka tampilan dokumen masing-masing berdasarkan operasi keluar dan gaya dokumen. Dengan cara ini, mode strategi memisahkan perilaku keluar dari lingkungan dokumen keluar, dan peningkatan, penurunan, atau modifikasi algoritma keluar tidak akan mempengaruhi lingkungan dan klien. Gambar 1-2 Modul outbound dirancang berdasarkan pemikiran berorientasi objek Gambar 1-3 Modul outbound dirancang berdasarkan pemikiran pola desain Keuntungan dari pola strategi adalah pemisahan algoritma dan lingkungan, dan keduanya dapat berkembang secara mandiri. Untuk mengilustrasikan dengan lebih baik manfaat pemisahan algoritma dan lingkungan, kita sebaiknya melihat desain pada Gambar 1-4. Dalam desain ini, tidak ada konsep modul keluar dan masuk, karena saya mengabstraksi semua dokumen keluar/masuk dan secara dinamis menggabungkan antarmuka dan perilaku dokumen selama runtime. Melalui kelas operasi keluar/masuk, kelas perilaku yang berbeda dapat dipertahankan, ditanyakan, dan dikonfigurasi. Perilaku keluar/masuk yang diabstraksi merangkum algoritme terkaitnya dalam bentuk kelas strategi untuk menyelesaikan operasi berbagai jenis dokumen masuk dan keluar. Hal ini jelas meningkatkan kegunaan kembali dan skalabilitas sistem serta mengurangi kesulitan pemeliharaan. Gambar 1-4 Keuntungan dari pola strategi adalah pemisahan algoritma dan lingkungan. Keduanya dapat berkembang secara independen. Dapat dilihat bahwa pola strategi cocok untuk situasi berikut: · Ketika terdapat perbedaan antara banyak kelas yang terkait hanya dalam perilaku mereka. Pola Strategi memungkinkan suatu objek untuk secara dinamis memilih satu perilaku di antara banyak perilaku. · Ketika terdapat beberapa algoritma alternatif untuk mencapai suatu tujuan, seperti algoritma yang Anda tetapkan berdasarkan trade-off yang berbeda (yaitu, menerapkan strategi yang berbeda). Algoritma spesifik ini dapat dienkapsulasi ke dalam kelas turunan dari kelas algoritma abstrak dan menikmati antarmuka terpadu dari kelas algoritma abstrak. Melalui polimorfisme, klien dapat memilih algoritma tertentu selama algoritma tersebut memiliki objek kelas algoritma abstrak. · Ketika suatu algoritma menggunakan data yang tidak tersedia untuk klien. Menggunakan pola Strategi menghindari pemaparan struktur data terkait algoritma yang kompleks. Faktanya, klien tidak perlu mengetahui pengetahuan dan data terkait algoritma. · Ketika definisi kelas memiliki banyak perilaku dan beberapa pernyataan kondisional digunakan untuk menentukan pemilihan perilaku ini. Pola strategi dapat mentransfer perilaku ini ke kelas strategi spesifik yang sesuai, sehingga menghindari beberapa pilihan kondisional yang sulit dipertahankan, dan mewujudkan ide pemrograman berorientasi objek.
1.2 Struktur dan penggunaan
Struktur pola strategi ditunjukkan pada Gambar 1-5, yang mencakup peserta berikut: · Strategi abstrak (TStrategy) - mendeklarasikan antarmuka umum untuk semua algoritma yang didukung. TContext menggunakan antarmuka ini untuk memanggil algoritma yang ditentukan dan dienkapsulasi oleh TConcreteStrategy. · Strategi Beton (TConcreteStrategy) - merangkum algoritma atau perilaku tertentu. Implementasikan antarmuka TStrategy. · Konteks (TContext) – mengacu pada TStrategy. Panggil antarmuka TStrategy untuk mengonfigurasi algoritme atau perilaku tertentu secara dinamis. Gambar 1-5 Struktur pola strategi Dalam pola strategi, algoritma yang dipilih diimplementasikan melalui interaksi TStrategy dan TContext. Saat algoritme dipanggil, TContext dapat meneruskan semua data yang diperlukan oleh algoritme ke TSstrategy. Alternatifnya, TContext dapat meneruskan dirinya sebagai parameter ke operasi TStrategy. Ketika TContext meneruskan permintaan klien ke TStrategy-nya, klien biasanya membuat dan meneruskan objek TConcreteStrategy ke TContext; dengan cara ini, klien hanya berinteraksi dengan TContext. Biasanya ada serangkaian kelas TConcreteStrategy yang dapat dipilih klien. --------------------------------------------------- ----------------------------------------
Artikel terkait lainnya dan contoh kode sumber program dapat diunduh dari situs web penulis: http://www.liu-yi.net