Proxy

2,316 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,316
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Proxy

  1. 1. Proxy
  2. 2. Proxy パターン
  3. 3. クラス図
  4. 4. Decorator パターンと 似てるね!
  5. 5. //Proxy Patternpublic class Proxy implements Subject{ private Subject subject; public Proxy(){ subject = new RealSubject(); } public void doAction(){ ...; subject.doAction(); ...; }}//client for Proxypublic class Client{ public static void main(String[] args){ //the client doesn’t know the Proxy //delegate another object Subject subject = new Proxy(); ...; }}
  6. 6. Proxy パターン● Decorator パターンと似てるけど違うよ ● Decorator は移譲オブジェクトへの機能の追加● Proxy は移譲オブジェクトへのアクセスをコン トロール● Proxy は移譲オブジェクトをクライアントへ露 出させない
  7. 7. Proxy パターンの細かい種類● Virtual Proxy ● 主にリソースを食う移譲オブジェクトの遅延初期 化や使い回し (Flyweight) など● Remote Proxy ● 隠れてこそこそリモート通信するやつ● Access Proxy ● アクセス制限など● Smart Proxy ● Decorator パターンのこと
  8. 8. Java EE におけるプロキシ● JNDI から取得できるコンポーネントは大抵全 部プロキシ ● java.sql.Connection ● javax.jms.Connection ● EJB● Java EE ではこれらのプロキシオブジェクト たちハンドル、スタブと呼ばれる
  9. 9. java.lang.reflect.Proxy● ダイナミックプロキシを作ることができる ● プロキシ対象クラスが事前にわからない場合に使 うInvocationHandler handler = new MyInvocationHandler(...);Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class[] { Foo.class }, handler);

×