Java中的靜態代理模式詳解

大雄45發表於2023-02-22
導讀 這篇文章主要為大家介紹了Java中的靜態代理模式,文中透過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
靜態代理模式
代理模式

代理人可以替受代理的人完成一些工作,比如:學校與學生之間的關係來說,學生就好比被被代理類,學生只需要負責上課,寫作業,考試等事務,而類似於課程,考試,任課教師的安排等都不需要學生去做,可以交給其學校完成。

靜態代理模式的實現要求

提供兩個真實的具體的類,代理類與被代理類;

兩個類同時實現同一個介面,介面中定義多個抽象方法(提取代理類,被代理各自的行為任務)

代理類一定要有被代理物件的引用,為了能在代理類中呼叫被代理類的重寫介面中的方法

舉例

介面-----包含代理人和被代理人需要進行的事務:

package static_assist;
 
public interface affair {
    //考試
    void testing();
    //考試安排
    void test_schedule();
    //上課
    void classing();
    //課程安排
    void classing_schedule();
    //任課教師安排
    void progamm_teacher();
}

代理人------學校:實現affair介面,並且重寫自己能夠完成的事務的方法,併產生被代理物件的引用,以便於呼叫被代理類中重寫的方法:

代理人不能完成的事務,需要使用被代理人的引用去呼叫該事務的方法

package static_assist;
 
public class school implements affair {
    private student student;//被代理類的引用
 
    public school(student student) {
        this.student=student;
    }
 
    public school() {
    }
 
    @Override
    public void testing() {
        student.testing();
    }
 
    @Override
    public void test_schedule() {
        System.out.println("學校進行考試安排");
    }
 
    @Override
    public void classing() {
        student.classing();
    }
 
    @Override
    public void classing_schedule() {
        System.out.println("學校進行上課安排");
    }
 
    @Override
    public void progamm_teacher() {
        System.out.println("學校進行任課教師安排");
    }
}

被代理人----學生:實現affair介面,並且只需要重寫自己能夠完成的事務的方法即可

package static_assist;
 
public class student implements affair {
    @Override
    public void testing() {
        System.out.println("學生進行考試");
    }
    @Override
    public void test_schedule() {
 
    }
 
    @Override
    public void classing() {
        System.out.println("學生去上課");
    }
 
    @Override
    public void classing_schedule() {
 
    }
 
    @Override
    public void progamm_teacher() {
 
    }
}

測試類:

package static_assist;
 
public class Test {
    public static void main(String[] args) {
        school school=new school(new student());//產生代理類和被代理類的例項化物件,將被代理類的例項化物件傳遞到代理類
 
//透過代理類例項化物件呼叫各個事務方法
        school.classing_schedule();
        school.progamm_teacher();
        school.classing();
        school.test_schedule();
        school.testing();
    }
}

輸出:

學校進行上課安排
學校進行任課教師安排
學生去上課
學校進行考試安排
學生進行考試

到此這篇關於詳解Java中的靜態代理模式的文章就介紹到這了

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2933019/,如需轉載,請註明出處,否則將追究法律責任。

相關文章