文档详情

java代理详细说明.docx

发布:2017-12-12约2.43万字共25页下载文档
文本预览下载声明
Java之代理概念代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道。如果:公司接口中有一个卖产品的方法,那么公司需要实现这个方法,而代理商也必须实现这个方法。如果公司卖多少钱,代理商也卖多少钱,那么代理商就赚不了钱。所以代理商在调用公司的卖方法后,加上自己的利润然后再把产品卖给客户。而客户部直接跟公司打交道,或者客户根本不知道公司的存在,然而客户最终却买到了产品。专业点说:代理模式是对象的结构型模式,代码模式给某一个对象提供代理,并由代理对象控制原对象(目标对象,被代理对象)的引用。简单点说,就是通过一个工厂生成一个类的代理对象,当客户端使用的时候不直接使用目标对象,而是直接使用代理对象。jdk的静态代理Jdk的静态代理要求,目标对象和代理对象都要实现相同的接口。然后提供给客户端使用。这个代理对客户端是可见的,其结果图如下:下面给出一个例子:首先建立1个接口:UserService.java定义如下方法:package com.xie.service;publicinterfaceUserService {publicvoid addUser(String userId,String userName);publicvoid delUser(String userId);publicvoid modfiyUser(String userId,String userName);public String findUser(String userId);}然后实现这个接口的目标对象:UserServiceImpl.javapackage com.xie.serviceimpl;import com.xie.service.UserService;publicclass UserServiceImpl implements UserService {@Overridepublicvoid addUser(String userId, String userName) {System.out.println(UserServiceImpl addUser userId-+userId);}@Overridepublicvoid delUser(String userId) {System.out.println(UserServiceImpl delUser userId-+userId);}@Overridepublicvoid modfiyUser(String userId, String userName) {System.out.println(UserServiceImpl modfiyUser userId-+userId);}@Overridepublic String findUser(String userId) {System.out.println(UserServiceImpl findUser userId-+userId);return张山;}}为目标对象创建代理对象:UserServiceImplProxy.java代理对象持有目标对象的引用。package com.xie.serviceproxy;import com.xie.service.UserService;publicclass UserServiceImplProxy implements UserService {private UserService userService;public UserServiceImplProxy(UserService userService){this.userService = userService;}@Overridepublicvoid addUser(String userId, String userName) {try {System.out.println(开始执行:addUser);userService.addUser(userId, userName);System.out.println(addUser执行成功。);} catch (Exception e) {System.out.println(addUser执行失败。);}}@Overridepublicvoid delUser(String userId) {}@Overridepublicvoid modfiyUser(String userId, String userName) {}@Overridepublic String findUser(String userId) {returnnull;}}最后调用代理对象完成功能:Client.javapackage
显示全部
相似文档