黑马程序员技术交流社区

标题: 代理类的作用是什么 [打印本页]

作者: 我手心里的宝    时间: 2013-3-26 09:00
标题: 代理类的作用是什么
代理类的作用是什么?为什么定义代理类
作者: 123    时间: 2013-3-26 09:09
代理类的作用:为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能。
代理类可以在不修改目标类的基础上给类增加一些系统方法,所以要使用代理类啊,如果不使用代理类就要修改目标类的代码了,显然那样做事很麻烦的。
作者: 小路飞    时间: 2013-3-26 15:16
本帖最后由 侯国奇 于 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, 下载次数: 63

源代码


作者: 高顺德    时间: 2013-3-26 16:05
代理类可以理解为原有类的子类 你又封装了一次而已




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2