关闭

Java静态代理

标签: javaJava SE二十三种设置模式静态代理动态代理
20人阅读 评论(0) 收藏 举报
分类:

.

代理模式:就是为目标对象提供一种代理已达到控制对象真实对象访问的目的
  

在一些情况下,一些客户不能直接或不想直接访问目标对象,而代理对象则起到在这两者之间的的"中介人"作用.


=========================================================================================

角色描述:

①代理类和目标类共同的接口

②目标类

③代理类

④测试类(非必须)


=========================================================================================案例分析:

1.共同接口

package com.gyoomi.e_staticproxy;
/**
 * 
 * @ClassName: Subject
 * @Description: 代理类和抽象类的共同的接口
 * @author gyoomi
 * @date 2017年9月18日
 *
 */
public interface Subject {
	public void eat();
}
2.目标类

package com.gyoomi.e_staticproxy;

/**
 * 
 * @ClassName: RealSubject
 * @Description: 目标类
 * @author gyoomi
 * @date 2017年9月18日
 *
 */
public class RealSubject implements Subject {

	@Override
	public void eat() {
		System.out.println("real subject eat somethings");
	}
}
3.代理类
package com.gyoomi.e_staticproxy;
/**
 * 
 * @ClassName: ProxySubject
 * @Description: 代理类(静态代理--->编译前就已存在)
 * @author gyoomi
 * @date 2017年9月18日
 *
 */
public class ProxySubject implements Subject{
	//代理类内部包含对真实类的引用
	private RealSubject  realSubject = new RealSubject();
	
	@Override
	public void eat() {
		//真实目标类之前做一些其他操作
		this.preEat();
		
		//真实目标类要完成的事情
		realSubject.eat();
		
		//真实目标类之后做一些其他操作
		this.postEat();
	}
	
	//前方法
	private void preEat() {
		System.out.println("before eating...");
	}
	//后方法
	private void postEat() {
		System.out.println("after eating...");
	}

}

===================================================================================================================================

4:测试类(非必须):

package com.gyoomi.e_staticproxy;
/**
 * 
 * @ClassName: Client
 * @Description:客户端测试类
 * @author gyoomi
 * @date 2017年9月18日
 *
 */
public class Client {
	public static void main(String[] args) {
		Subject proxy = new ProxySubject();
		proxy.eat();
	}
}
结论:
按照上述的方式(静态代理)使用代理模式,那么真实角色必须是实现已经存在的,并将其作为代理对象的内部属性。

但是实际使用时,一个真实角色必须对应一个代理角色,但如果大量使用会导致类的急剧膨胀;此外,如果事先并不知道真实角色,该如何使用代理呢?接下来就是JDK的动态 代理!!!



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:426次
    • 积分:114
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档