這篇文章參考了網上的一篇文檔寫的。原文出處:http://blog.csdn.net/zhengzhb/article/details/7489639
訪問者模式就是通過一個類作爲參數(訪問者),這樣就有了類型約束,只能是某個類的實例才能訪問該類的方法(其實就是調用這個類的方法)。訪問者作爲參數傳遞進來,而這個訪問者(一個獨立的類)有一個方法,方法的參數就是被訪問類的引用(this關鍵字),通過這個this去調用被訪問類的方法,整個過程就是訪問者模式,這裏面有幾個關鍵點
1.訪問者本身有一個方法,該方法的參數爲被訪問者(約束類型),然後在方法體中調用參數的方法
2.被訪問者有一個方法,方法的參數爲訪問者(約束類型爲訪問者),然後在方法體中調用參數的方法
3.被訪問者的某個方法的參數傳入的實參爲this,即代表了被訪問者,這樣就可以通過this關鍵字調用這個this(被訪問者的引用)的方法
代碼:
- class A {
- public void method1(){
- System.out.println("我是A");
- }
- public void method2(B b){
- b.showA(this);
- }
- }
- class B {
- public void showA(A a){
- a.method1();
- }
- }