Rumah  >  Artikel  >  Java  >  Cara memahami mod proksi Java

Cara memahami mod proksi Java

PHPz
PHPzke hadapan
2023-04-19 11:34:05654semak imbas

    Mod agensi: Proksi statik

    Kadangkala, kita mungkin tidak mahu berhadapan dengan sesuatu atau seseorang secara langsung, jadi kita boleh mencari perantara Go dan melakukan sesuatu untuk kita, seperti menghantar hadiah, menelefon untuk urusan, mencari tukang cuci untuk pergi ke bandar tertentu, dsb. Dengan cara ini, pihak lain tidak tahu siapa yang terlibat di sebalik pengantara, dan ia memainkan peranan sebagai perantara dan melindungi objek sasaran. Ini adalah model agensi. Maksudnya, seorang perantara melakukannya untuk anda.

    Cara memahami mod proksi Java

    1. Definisi mod proksi

    Atas sebab tertentu, adalah perlu untuk menyediakan proksi untuk objek untuk mengawal akses kepada objek. Pada masa ini, objek capaian tidak sesuai atau tidak boleh merujuk secara langsung objek sasaran, dan objek proksi bertindak sebagai perantara antara objek capaian dan objek sasaran

    Rajah struktur ringkas:

    Cara memahami mod proksi Java

    2 Kebaikan dan keburukan model proksi

    Kelebihan:

    1 antara klien dan objek sasaran. Peranan melindungi objek sasaran

    2 Ia boleh mengembangkan fungsi objek sasaran

    3. yang mengurangkan gandingan sistem pada tahap tertentu dan meningkatkan kerumitan program

    Kelemahan:

    1. Ia akan menyebabkan bilangan kelas dalam sistem reka bentuk untuk meningkat (kerana terdapat satu atau lebih kelas perantara (ejen))

    2. Menambah objek proksi antara klien dan objek sasaran akan memperlahankan kelajuan pemprosesan permintaan

    3. Meningkatkan kerumitan sistem

    3 Klasifikasi Proksi bagi corak

    Corak proksi dibahagikan kepada proksi statik (artikel ini) dan proksi dinamik (seterusnya artikel) :

    • Statik: Pengaturcara mencipta kelas proksi atau alat tertentu secara automatik menjana kod sumber dan kemudian menyusunnya daripada kelas proksi sudah wujud sebelum atur cara dijalankan

    • Dinamik: Dicipta secara dinamik menggunakan mekanisme pantulan semasa atur cara berjalan

    4. Struktur mod proksi statik

    1 Kelas tema abstrak: mengisytiharkan kaedah perniagaan yang dilaksanakan oleh tema sebenar dan objek proksi melalui antara muka atau kelas abstrak

    2. Kelas tema sebenar: melaksanakan tema abstrak Perniagaan khusus ialah objek sebenar yang diwakili oleh objek proksi, yang merupakan objek akhir untuk dirujuk

    3 . Kelas proksi: menyediakan antara muka yang sama seperti topik sebenar, dan mengandungi rujukan dalaman kepada Rujukan topik sebenar, yang boleh mengakses, mengawal atau melanjutkan fungsi tema sebenar

    Pertunjukan kod :

    Tentukan tema abstrak:

    Apabila menggunakan proksi statik, anda perlu menentukan antara muka atau kelas induk, dan objek proksi dan objek proksi melaksanakan antara muka yang sama atau mewarisi kelas induk yang sama

    /**
     *抽象主题
     */
    
    public interface Subject {
        void Request();
    }

    Topik sebenar:

    /**
     *真实主题类:实现抽象主题
     */
    public class RealSubject implements Subject{
        @Override
        public void Request() {
            System.out.println("您的航班正在飞行");
        }
    }

    Kelas proksi:

    //代理类,实现抽象类的接口
    public class Proxy implements Subject{
    
        private RealSubject realSubject;
    
        @Override
        public void Request() {
            //先判断是否存在真实主题RealSubject
            //如果没有,就新建一个
            if(realSubject == null){
                realSubject = new RealSubject();
            }
    
            //预处理,使用这个方法
            preRequest();
    
            //去访问真实主题类的方法
            realSubject.Request();
    
            //代理类的后续方法
            postRequest();
        }
    
        private void preRequest() {
            System.out.println("航班马上起飞啦");
        }
    
        private void postRequest() {
            System.out.println("航班到达目的地,感谢乘坐");
        }
    
    
    }

    Kelas ujian:

    public class Test {
        public static void main(String[] args) {
    
            //使用代理去访问RealSubject里面的Request
            Proxy proxy = new Proxy();
            proxy.Request();
        }
    }

    Keputusan Output:

    Penerbangan akan berlepas tidak lama lagi
    Penerbangan anda sedang terbang
    Penerbangan telah tiba di destinasi, terima kasih kerana mengambilnya

    Melalui demonstrasi di atas, Gunakan kelas proksi untuk mengakses kaedah kelas subjek sebenar, supaya kelas ujian tidak tahu siapa yang mengaksesnya, sama ada kelas proksi atau ada orang lain di belakang kelas proksi, supaya objek itu boleh dilindungi dengan baik. Ini juga merupakan kelebihan model agensi.

    Ringkasan proksi statik:

    Anda boleh melanjutkan fungsi sasaran tanpa mengubah suai fungsi objek sasaran, tetapi objek proksi perlu sama dengan objek sasaran, jadi akan terdapat banyak kelas proksi Apabila terdapat banyak kelas proksi, kerumitan penyelenggaraan akan menjadi lebih besar. Kemudian anda perlu menggunakan proksi dinamik.

    5. Senario aplikasi mod proksi

    Apabila anda tidak boleh atau tidak mahu merujuk secara langsung objek atau terdapat kesukaran untuk mengakses objek, anda boleh mengaksesnya secara tidak langsung melalui objek proksi. Terdapat dua tujuan utama menggunakan mod proksi: Satu adalah untuk melindungi objek sasaran, dan satu lagi adalah untuk meningkatkan objek sasaran

    Ringkasan senario aplikasi ini ialah dirujuk daripada Internet:

    • Proksi jauh, kaedah ini biasanya digunakan untuk menyembunyikan fakta bahawa objek sasaran wujud dalam ruang alamat yang berbeza untuk memudahkan akses pelanggan. Sebagai contoh, apabila pengguna memohon beberapa ruang cakera rangkaian, cakera keras maya akan dibuat dalam sistem fail pengguna Apabila pengguna mengakses cakera keras maya, dia sebenarnya mengakses ruang cakera rangkaian

    • .
    • ejen maya , kaedah ini selalunya digunakan apabila objek sasaran yang hendak dibuat mahal. Sebagai contoh, jika mengambil masa yang lama untuk memuat turun imej yang besar, dan beberapa pengiraan adalah rumit dan tidak dapat diselesaikan dalam masa yang singkat, anda boleh menggantikan objek sebenar terlebih dahulu dengan ejen maya berskala kecil untuk menghapuskan perasaan pengguna bahawa pelayan lambat

    • Proksi keselamatan, kaedah ini biasanya digunakan untuk mengawal hak akses pelbagai jenis pelanggan kepada objek sebenar

    • Panduan pintar digunakan terutamanya untuk menambah beberapa fungsi pemprosesan tambahan pada proksi apabila memanggil objek sasaran. Sebagai contoh, tambahkan fungsi mengira bilangan rujukan kepada objek sebenar, supaya apabila objek tidak dirujuk, ia boleh dilepaskan secara automatik

    • Lazy loading merujuk kepada melambatkan pemuatan daripada objek sebenar untuk meningkatkan prestasi pemuatan Sasaran. Contohnya, Hibernate mempunyai pemuatan malas atribut dan pemuatan malas jadual berkaitan

    Atas ialah kandungan terperinci Cara memahami mod proksi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
    Artikel sebelumnya:Cara menggunakan Saluran javaArtikel seterusnya:Cara menggunakan Saluran java