詳解Java中的靜態(tài)代理模式
靜態(tài)代理模式
代理模式
代理人可以替受代理的人完成一些工作,比如:學(xué)校與學(xué)生之間的關(guān)系來說,學(xué)生就好比被被代理類,學(xué)生只需要負(fù)責(zé)上課,寫作業(yè),考試等事務(wù),而類似于課程,考試,任課教師的安排等都不需要學(xué)生去做,可以交給其學(xué)校完成。
靜態(tài)代理模式的實現(xiàn)要求
提供兩個真實的具體的類,代理類與被代理類;
兩個類同時實現(xiàn)同一個接口,接口中定義多個抽象方法(提取代理類,被代理各自的行為任務(wù))
代理類一定要有被代理對象的引用,為了能在代理類中調(diào)用被代理類的重寫接口中的方法
舉例
接口-----包含代理人和被代理人需要進(jìn)行的事務(wù):
package static_assist;
public interface affair {
//考試
void testing();
//考試安排
void test_schedule();
//上課
void classing();
//課程安排
void classing_schedule();
//任課教師安排
void progamm_teacher();
}
代理人------學(xué)校:實現(xiàn)affair接口,并且重寫自己能夠完成的事務(wù)的方法,并產(chǎn)生被代理對象的引用,以便于調(diào)用被代理類中重寫的方法:
代理人不能完成的事務(wù),需要使用被代理人的引用去調(diào)用該事務(wù)的方法
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("學(xué)校進(jìn)行考試安排");
}
@Override
public void classing() {
student.classing();
}
@Override
public void classing_schedule() {
System.out.println("學(xué)校進(jìn)行上課安排");
}
@Override
public void progamm_teacher() {
System.out.println("學(xué)校進(jìn)行任課教師安排");
}
}
被代理人----學(xué)生:實現(xiàn)affair接口,并且只需要重寫自己能夠完成的事務(wù)的方法即可
package static_assist;
public class student implements affair {
@Override
public void testing() {
System.out.println("學(xué)生進(jìn)行考試");
}
@Override
public void test_schedule() {
}
@Override
public void classing() {
System.out.println("學(xué)生去上課");
}
@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());//產(chǎn)生代理類和被代理類的實例化對象,將被代理類的實例化對象傳遞到代理類
//通過代理類實例化對象調(diào)用各個事務(wù)方法
school.classing_schedule();
school.progamm_teacher();
school.classing();
school.test_schedule();
school.testing();
}
}
輸出:
學(xué)校進(jìn)行上課安排
學(xué)校進(jìn)行任課教師安排
學(xué)生去上課
學(xué)校進(jìn)行考試安排
學(xué)生進(jìn)行考試
到此這篇關(guān)于詳解Java中的靜態(tài)代理模式的文章就介紹到這了,更多相關(guān)Java靜態(tài)代理模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA 2020.1打開時閃退的問題及解決方法(完美解決方法)
這篇文章主要介紹了IDEA 2020.1打開時閃退問題及解決方法,本文給大家分享我的處理方案,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
Java?設(shè)計模式以虹貓藍(lán)兔的故事講解簡單工廠模式
簡單工廠模式是屬于創(chuàng)建型模式,又叫做靜態(tài)工廠方法(Static Factory Method)模式,但不屬于23種GOF設(shè)計模式之一。簡單工廠模式是由一個工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現(xiàn)2022-03-03
springboot項目中mapper.xml文件找不到的三種解決方案
這篇文章主要介紹了springboot項目中mapper.xml文件找不到的三種解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

