A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我手心里的宝 高级黑马   /  2013-3-26 09:00  /  1731 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代理类的作用是什么?为什么定义代理类

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-26 18:59

3 个回复

倒序浏览
代理类的作用:为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能。
代理类可以在不修改目标类的基础上给类增加一些系统方法,所以要使用代理类啊,如果不使用代理类就要修改目标类的代码了,显然那样做事很麻烦的。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 侯国奇 于 2013-3-26 15:18 编辑

代理类就是为其他对象提供一种代理,以控制被代理对象的访问。
可以从下面的例子中得出结论:
Subject.java
  1. package com.archer.proxy;

  2. public interface Subject {
  3.         public void findFriend();//找朋友
  4. }
复制代码
CompanyProxy.java
  1. package com.archer.proxy;

  2. public class CompanyProxy implements Subject {
  3.         private Subject proxy;
  4.         
  5.         CompanyProxy(Subject proxy) {
  6.                 this.proxy = proxy;
  7.         }
  8.         
  9.         public void start() {
  10.                 System.out.println("根据客户要求查找合适的朋友");
  11.                 System.out.println("相互联系,确定约会的时间地点");
  12.         }
  13.         public void end() {
  14.                 System.out.println("约会结束");
  15.         }
  16.         public void findFriend() {
  17.                 start();
  18.                 proxy.findFriend();
  19.                 end();
  20.         }
  21. }
复制代码
Person.java
  1. package com.archer.proxy;

  2. class Person implements Subject {
  3.         private String name;

  4.         Person(String name) {
  5.                 this.name = name;
  6.         }
  7.         public String getName() {
  8.                 return name;
  9.         }

  10.         public void setName(String name) {
  11.                 this.name = name;
  12.         }
  13.         
  14.         public void findFriend() {
  15.                 System.out.println(name+"开始约会");
  16.                 System.out.println("相互介绍");
  17.                 System.out.println("聊天吃饭");
  18.                 System.out.println("散步");
  19.                 System.out.println("看电影");
  20.                 System.out.println("吃夜宵");
  21.                 System.out.println("送对方回家,约下次再见");
  22.         }
  23. }
复制代码
Test.java
  1. package com.archer.proxy;

  2. public class Test {

  3.         public static void main(String[] args) {
  4.                 Subject p = new Person("张三");
  5.                 CompanyProxy cp = new CompanyProxy(p);
  6.                 cp.findFriend();
  7.         }
  8. }
复制代码

MyProxy.zip

6.65 KB, 下载次数: 67

源代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
代理类可以理解为原有类的子类 你又封装了一次而已
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马