云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > java代理详细说明

java代理详细说明

  • 62 次阅读
  • 3 次下载
  • 2025/6/15 15:27:41

Java之代理

一. 概念

代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道。如果:公司接口中有一个卖产品的方法,那么公司需要实现这个方法,而代理商也必须实现这个方法。如果公司卖多少钱,代理商也卖多少钱,那么代理商就赚不了钱。所以代理商在调用公司的卖方法后,加上自己的利润然后再把产品卖给客户。而客户部直接跟公司打交道,或者客户根本不知道公司的存在,然而客户最终却买到了产品。 专业点说:代理模式是对象的结构型模式,代码模式给某一个对象提供代理,并由代理对象控制原对象(目标对象,被代理对象)的引用。简单点说,就是通过一个工厂生成一个类的代理对象,当客户端使用的时候不直接使用目标对象,而是直接使用代理对象。

二. jdk的静态代理

Jdk的静态代理要求,目标对象和代理对象都要实现相同的接口。然后提供给客户端使用。这个代理对客户端是可见的,其结果图如下:

下面给出一个例子:

首先建立1个接口:UserService.java定义如下方法:

package com.xie.service;

public interface UserService {

public void addUser(String userId,String userName); public void delUser(String userId);

public void modfiyUser(String userId,String userName); public String findUser(String userId);

}

然后实现这个接口的目标对象:UserServiceImpl.java

package com.xie.serviceimpl;

import com.xie.service.UserService;

public class UserServiceImpl implements UserService {

}

为目标对象创建代理对象:UserServiceImplProxy.java代理对象持有目标对象的引用。 package com.xie.serviceproxy;

import com.xie.service.UserService;

public class UserServiceImplProxy implements UserService {

private UserService userService;

@Override

public String findUser(String userId) { }

System.out.println(\return \张山\; @Override

public void modfiyUser(String userId, String userName) { }

System.out.println(\@Override

public void delUser(String userId) { }

System.out.println(\delUser userId->>\+userId); @Override

public void addUser(String userId, String userName) { }

System.out.println(\addUser userId->>\+userId);

userId->>\+userId);

userId->>\+userId);

}

public UserServiceImplProxy(UserService userService){ }

@Override

public void addUser(String userId, String userName) { }

@Override

public void delUser(String userId) { }

@Override

public void modfiyUser(String userId, String userName) { }

@Override

public String findUser(String userId) { }

return null; try { }

System.out.println(\开始执行:addUser\); userService.addUser(userId, userName); System.out.println(\执行成功。\); System.out.println(\执行失败。\); this.userService = userService;

} catch (Exception e) {

最后调用代理对象完成功能:Client.java package com.xie.client;

import com.xie.service.UserService;

import com.xie.serviceimpl.UserServiceImpl; import com.xie.serviceproxy.UserServiceImplProxy;

public class Client {

public static void main(String[] args) {

UserService userService = new UserServiceImplProxy(new UserServiceImpl()); userService.addUser(\ } }

三. jdk动态代理

静态代理要为每个目标类创建一个代理类,当需要代理的对象太多,那么代理类也变得很多。同时代理类违背了可重复代理只写一次的原则。jdk给我们提供了动态代理。其原理图如下:

Jdk的动态要求目标对象必须实现接口,因为它创建代理对象的时候是根据接口创建的。如果不实现接口,jdk无法给目标对象创建代理对象。被代理对象可以可以实现多个接口,创建代理时指定创建某个接口的代理对象就可以调用该接口定义的方法了。 首先定义2个接口:Service接口和UserService接口(上面的接口) Service.java

package com.xie.service;

public interface Service {

public void sayHello(String name); public int addOperter(int num,int num2); }

然后定义实现这2个接口的目标对象:UserServiceImpl.java package com.xie.serviceimpl;

import com.xie.service.Service; import com.xie.service.UserService;

public class UserServiceImpl implements UserService ,Service{

@Override

public void addUser(String userId, String userName) {

System.out.println(\

搜索更多关于: java代理详细说明 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Java之代理 一. 概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道。如果:公司接口中有一个卖产品的方法,那么公司需要实现这个方法,而代理商也必须实现这个方法。如果公司卖多少钱,代理商也卖多少钱,那么代理商就赚不了钱。所以代理商在调用公司的卖方法后,加上自己的利润然后再把产品卖给客户。而客户部直接跟公司打交道,或者客户根本不知道公司的存在,然而客户最终却买到了产品。 专业点说:代理模式是对象的结构型模式,代码模式给某一个对象提供代理,并由代理对象控制原对象(目标对象,被代理对象)的引用。简单点说,就是通过一个工厂生成一个类的代理对象,当客户端使用的时候不直接使用目标对象,而是直接使用代理对象。 二. jdk的静态代理 Jdk的静态代理要求,目标对象和代理对象都要实现相同

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com