Proxy模式探討(筆記心得體會)

tbase發表於2004-03-14
定義:為其他物件提供一種代理以控制對這個物件的訪問。

    我的理解就是此物件就是另外某個物件的代理(鏡子,封面……)。是一種“代理者類”和“被代理者類”的意思。也就是控制和被控制關係。
我在很多書和文件上都看到Proxy模式和State模式都被稱為Object decoupling(退耦)。實在讓吾等非文學家感到鬱悶。網上查了下大意是
“指消除或減輕兩個以上物體間在某方面相互影響的方法”。這種書寫的就是有問題,多寫一句會死人啊。簡單的東西非要把你寫昏了才顯示他水平。
    關於為什麼都稱之為退耦,我在State模式的探討中有描述,看完State模式比較好理解。
<p class="indent">

//: proxy:ProxyDemo.java 
import junit.framework.*;
 
interface ProxyBase {
  void f();
  void g();
  void h();
}
 
class Proxy implements ProxyBase {
  private ProxyBase implementation;
  public Proxy() { 
    implementation = new Implementation(); 
  }
  // Pass method calls to the implementation:
  public void f() { implementation.f(); }
  public void g() { implementation.g(); }
  public void h() { implementation.h(); }
}
 
class Implementation implements ProxyBase {
  public void f() { 
    System.out.println("Implementation.f()"); 
  }
  public void g() { 
    System.out.println("Implementation.g()"); 
  }
  public void h() { 
    System.out.println("Implementation.h()"); 
  }
}
 
public class ProxyDemo extends TestCase  {
  Proxy p = new Proxy();
  public void test() {
    // This just makes sure it will complete 
    // without throwing an exception.
    p.f();
    p.g();
    p.h();
  }
  public static void main(String args[]) {
    junit.textui.TestRunner.run(ProxyDemo.class);
  }
} ///:~
<p class="indent">

相關文章