一 概述
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); } }