詳解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中的靜態代理模式的文章就介紹到這瞭,更多相關Java靜態代理模式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!