一 概述 1.什麼是代理模式? 為了隱藏與保護目標對象,為其他對象提供一個代理以控制對該目標對象的訪問。 2.什麼是靜態代理模式? 代理模式有兩種: 靜態代理:代理對象固定。 動態代理:代理對象不固定。 二 靜態代理模式 1.基本結構: 父類:可以是一個介面、抽象類、一般類,一般是介面,保證可以按照 ...
一 概述
1.什麼是代理模式?
為了隱藏與保護目標對象,為其他對象提供一個代理以控制對該目標對象的訪問。
2.什麼是靜態代理模式?
代理模式有兩種:
- 靜態代理:代理對象固定。
- 動態代理:代理對象不固定。
二 靜態代理模式
1.基本結構:
父類:可以是一個介面、抽象類、一般類,一般是介面,保證可以按照操作目標對象的方式操作代理對象。
目標類:實現了父類。
代理類:不僅擁有與目標相同的父類,而且包含目標類對象。
2.代理類包含目標對象的實現
代理模式的作用是隱藏與保護目標對象,因此目標對象不能由用戶創建,而是在代理類內部創建,具體在代理類構造方法內創建,這樣就隱藏了目標對象。
3.實現Demo
介面
package com.designmode.proxy.staticTest.demo02; public interface ISomeService { String doSome(String message); }
目標類
package com.designmode.proxy.staticTest.demo02; public class SomeServiceImpl implements ISomeService { @Override public String doSome(String message) { // TODO Auto-generated method stub return message; } }
代理類
package com.designmode.proxy.staticTest.demo02; public class SomeServiceProxy implements ISomeService { private ISomeService service; public SomeServiceProxy() { super(); service = new SomeServiceImpl();//在代理類構造方法內部創建目標對象 } @Override public String doSome(String message) { return service.doSome(message).toUpperCase(); } }
測試類
package com.designmode.proxy.staticTest.demo02; import org.junit.Test; public class StaticProxyTest { @Test public void test01() { ISomeService proxy = new SomeServiceProxy(); String result = proxy.doSome("abc"); System.out.println("result=" + result); } }