Memahami kemahiran pengaturcaraan berorientasikan aspek (AOP)_javascript

WBOY
Lepaskan: 2016-05-16 16:01:30
asal
1104 orang telah melayarinya

Apabila menulis kod pemprosesan logik perniagaan tradisional, kami biasanya melakukan beberapa perkara: pengelogan, kawalan transaksi, kawalan kebenaran, dsb., dan kemudian tulis kod pemprosesan logik perniagaan teras. Apabila saya selesai menulis kod dan melihat ke belakang, saya tidak dapat membantu tetapi mendapati bahawa antara ratusan baris kod dalam Yangyangshasha, hanya beberapa baris sebenarnya digunakan untuk pemprosesan logik perniagaan teras, seperti yang ditunjukkan dalam Rajah 6-4. Kaedah demi kaedah, kelas demi kelas, sekian tahun berlalu dengan rasa tidak berdaya dan penyesalan. Tidak mengapa, tetapi jika pada akhir projek, tiba-tiba diputuskan bahawa perubahan besar diperlukan dalam kawalan kebenaran, beribu-ribu kaedah perlu "melawat" satu demi satu, dan kesakitan akan menjadi "lebih teruk".


Jika semua kod biasa dalam banyak kaedah dalam Rajah 6-4 boleh diekstrak, diletakkan di suatu tempat untuk pengurusan berpusat, dan kemudian bekas boleh secara dinamik menenun kod biasa ini ke dalam satu sama lain semasa masa jalan tertentu, sekurang-kurangnya dua masalah boleh diselesaikan :

Apabila menulis kaedah pemprosesan logik perniagaan tertentu, pengaturcara Java EE hanya perlu mengambil berat tentang pemprosesan logik perniagaan teras, yang bukan sahaja meningkatkan kecekapan kerja, tetapi juga menjadikan perubahan kod mudah dan elegan.

Dalam penyelenggaraan masa hadapan, memandangkan kod logik perniagaan dan kod biasa disimpan secara berasingan, dan kod biasa disimpan secara berpusat, kerja penyelenggaraan menjadi mudah dan mudah.

Pengaturcaraan berorientasikan aspek Teknologi AOP dilahirkan untuk menyelesaikan masalah ini Aspek ialah keratan rentas, seperti yang ditunjukkan dalam Rajah 6-5, yang mewakili fungsi biasa di mana-mana, seperti aspek log, aspek kebenaran dan aspek menunggu .

Mari kita ambil proses pelaksanaan AOP komponen logik perniagaan pengurusan pengguna UserService (lihat Rajah 6-6) sebagai contoh untuk menganalisis secara mendalam prinsip pelaksanaan teknologi AOP. Teknologi AOP adalah berdasarkan mekanisme pantulan dan mekanisme proksi dinamik bahasa Java. Apabila komponen logik perniagaan sedang berjalan, bekas AOP akan mencipta objek proksi secara dinamik untuk pengguna memanggil Objek proksi ini telah berjaya memotong aspek ke titik sambungan kaedah sasaran mengikut niat pengaturcara Java EE, jadi. bahawa fungsi aspek adalah konsisten dengan titik sambungan kaedah sasaran Fungsi logik perniagaan dilaksanakan secara serentak. Pada dasarnya, apa yang dipanggil secara langsung oleh pemanggil sebenarnya adalah objek proksi yang dijana secara dinamik oleh bekas AOP, dan kemudian objek proksi memanggil objek sasaran untuk melengkapkan pemprosesan logik perniagaan asal, dan objek proksi telah mensintesis aspek dan kaedah logik perniagaan.

Kini beberapa konsep yang terlibat dalam Rajah 6-6 dijelaskan seperti berikut.

Aspek: Sebenarnya, ia adalah realisasi fungsi biasa. Seperti aspek log, aspek kebenaran, aspek transaksi, dll. Dalam aplikasi sebenar, ia biasanya kelas Java biasa yang menyimpan pelaksanaan fungsi biasa Sebab mengapa ia boleh dikenali sebagai aspek oleh bekas AOP dinyatakan dalam konfigurasi.

Nasihat: Ia adalah pelaksanaan khusus aspek. Mengambil kaedah sasaran sebagai titik rujukan, mengikut tempat penempatan yang berbeza, ia boleh dibahagikan kepada lima jenis: pra-pemberitahuan (Sebelum), pasca-pemberitahuan (AfterReturning), pemberitahuan pengecualian (AfterThrowing), pemberitahuan akhir (Selepas) dan sekitarnya pemberitahuan (Sekitar). Dalam aplikasi sebenar, ia biasanya kaedah dalam kelas aspek Jenis pemberitahuan khusus juga dinyatakan dalam konfigurasi.

Joinpoint: Ia adalah tempat di mana aspek boleh disisipkan semasa proses menjalankan program. Contohnya, seruan kaedah, balingan pengecualian atau pengubahsuaian medan, dsb., tetapi Spring hanya menyokong titik sambungan peringkat kaedah.

Pointcut: Digunakan untuk menentukan titik sambungan yang harus dipotong oleh pemberitahuan. Pemberitahuan yang berbeza biasanya perlu dipotong menjadi titik sambungan yang berbeza. Padanan tepat ini ditakrifkan oleh ungkapan biasa titik masuk.

Sasaran: Objek tersebut yang akan memasuki aspek, iaitu objek yang dimaklumkan. Hanya kod logik perniagaan teras bersih yang tinggal dalam objek ini dan semua kod fungsi biasa sedang menunggu bekas AOP untuk dipotong.

Objek proksi (Proksi): Objek yang dicipta secara dinamik selepas menggunakan pemberitahuan pada objek sasaran. Ia boleh difahami dengan mudah bahawa fungsi objek proksi adalah sama dengan fungsi logik perniagaan teras objek sasaran ditambah dengan fungsi biasa. Objek proksi adalah telus kepada pengguna dan merupakan produk daripada proses berjalan program.

Tenun: Proses mengaplikasikan aspek pada objek sasaran untuk mencipta objek proksi baharu. Proses ini boleh berlaku semasa tempoh penyusunan, tempoh pemuatan kelas dan masa jalan Sudah tentu, titik kejadian yang berbeza mempunyai prasyarat yang berbeza. Sebagai contoh, jika ia berlaku semasa penyusunan, ia memerlukan pengkompil khas yang menyokong pelaksanaan AOP ini jika ia berlaku semasa pemuatan kelas, ia memerlukan pemuat kelas khas yang menyokong pelaksanaan AOP hanya jika ia berlaku semasa masa jalan, ia boleh diteruskan; Mekanisme refleksi bahasa Java dan mekanisme proksi dinamik untuk mencapai pelaksanaan dinamik.

Berikut ialah suplemen:

AOP ialah singkatan daripada Pengaturcaraan Berorientasikan Aspek, yang bermaksud: Pengaturcaraan berorientasikan aspek, teknologi yang mencapai penyelenggaraan bersepadu fungsi program melalui ejen dinamik pra-penyusunan dan masa jalan.

AOP dan OOP ialah dua idea reka bentuk untuk bidang yang berbeza.

OOP (Pengaturcaraan Berorientasikan Objek) secara abstrak merangkum entiti dan sifat serta gelagatnya dalam proses pemprosesan perniagaan untuk mendapatkan pembahagian unit logik yang lebih jelas dan cekap.

AOP mengekstrak aspek dalam proses pemprosesan perniagaan Ia berkaitan dengan langkah atau peringkat tertentu dalam proses pemprosesan untuk mendapatkan kesan pengasingan gandingan rendah antara pelbagai bahagian dalam proses logik.

Kita boleh memahami AOP dan OOP hanya daripada makna literal di atas, dan tidak keterlaluan untuk menggunakan pemahaman berikut:

OOP sebenarnya ialah enkapsulasi sifat dan gelagat objek, dan AOP tidak boleh bercakap tentang perkara ini, bagaimanapun, AOP menangani langkah dan peringkat tertentu, dan mengekstrak aspek daripadanya, jika beberapa atau lebih proses logik. jika terdapat gelagat operasi yang berulang, AOP boleh mengekstraknya dan menggunakan ejen dinamik untuk mencapai penyenggaraan fungsi program yang bersatu Ini mungkin terlalu tersirat Jika ia melibatkan penghakiman kebenaran, pengelogan, dsb. Jika kita hanya menggunakan OOP, bagaimana pula dengan penghakiman kebenaran? Tambahkan penghakiman kebenaran sebelum setiap operasi? Bagaimana pula dengan pembalakan? Tambah log secara manual pada permulaan, akhir dan pengecualian setiap kaedah? Oleh itu, jika anda menggunakan AOP untuk menyelesaikan operasi berulang ini dengan bantuan proksi, anda boleh mengurangkan gandingan antara pelbagai bahagian dalam proses logik. Kedua-duanya saling melengkapi kekuatan dan melengkapi antara satu sama lain.

Mari ketahui lebih lanjut tentang beberapa konsep AOP:

•Aspek: Pemodulatan kebimbangan Perlaksanaan kebimbangan ini juga boleh memotong berbilang objek. Pengurusan urus niaga ialah contoh yang baik tentang kebimbangan silang dalam aplikasi J2EE. Aspek dilaksanakan menggunakan Penasihat Spring atau pemintas.
•Joinpoint: Titik yang jelas dalam pelaksanaan program, seperti panggilan kaedah atau pengecualian khusus yang dilemparkan.
•Pemberitahuan (Nasihat): Pada titik sambungan tertentu, tindakan yang dilakukan oleh rangka kerja AOP. Pelbagai jenis pemberitahuan termasuk pemberitahuan "sekitar", "sebelum" dan "membuang". Jenis pemberitahuan dibincangkan di bawah. Banyak rangka kerja AOP, termasuk Spring, menggunakan pemintas sebagai model pemberitahuan dan mengekalkan rantai pemintas "di sekeliling" titik sambungan.
•Pointcut: Menentukan koleksi titik sambungan di mana pemberitahuan akan dicetuskan. Rangka kerja AOP mesti membenarkan pembangun menentukan titik masuk, contohnya, menggunakan ungkapan biasa.
•Pengenalan: Tambahkan kaedah atau medan pada kelas yang diberitahu. Spring membenarkan pengenalan antara muka baharu kepada mana-mana objek yang dinasihatkan. Sebagai contoh, anda boleh menggunakan import untuk membuat sebarang objek melaksanakan antara muka IsModified untuk memudahkan caching.
•Objek Sasaran: Objek yang mengandungi titik sambungan, juga dikenali sebagai objek diberitahu atau diproksi.
•Proksi AOP: Objek yang dicipta oleh rangka kerja AOP, termasuk pemberitahuan. Pada Musim Bunga, proksi AOP boleh menjadi proksi dinamik JDK atau proksi CGLIB.
•Anyaman: Memasang aspek untuk mencipta objek yang dinasihatkan. Ini boleh dilakukan pada masa penyusunan (cth. menggunakan pengkompil AspectJ) atau pada masa jalan. Spring, seperti rangka kerja AOP Java tulen lain, melengkapkan tenunan pada masa jalan.
Proksi AOP dalam Spring dijana dan diuruskan oleh bekas IoC Spring, dan kebergantungannya juga diuruskan oleh bekas IoC. Mengenai bagaimana AOP Spring dilaksanakan dalam projek, blog seterusnya akan menggunakan pembalakan sebagai contoh untuk belajar.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan