代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个客户不想或者不能直接引用另一个对象,
而代理对象可以在客户端和目标对象之间起到中介的作用。
它分为静态代理和动态代理。
先要理解静态代理。
打个俗语:某人要找领导办事,需要送礼。但他不能直接送吧,所有就委托领导的夫人或者小舅子什么的去送礼。但最终办事的还是领导,领导夫人只是一个中介的作用。
1.静态代理
Subject.java (某人)
public interface Subject {
void request();
}
RealSubject.java ( 领导 被代理类)
public class RealSubject implements Subject{
public void request() {
System.out.println("hello word!");
}
}
Proxy.java (代理类 领导夫人)
public class Proxy implements Subject{
private Subject subject=new RealSubject();
public void request() {
System.out.println("start...");
subject.request();
System.out.println("end...");
}
}
Client.java (客户端 调用)
public class Client {
public static void main(String[] args) {
Subject subjet=new Proxy();
subjet.request();
}
}
2.动态代理
public class RealSubject implements Subject {
public void request() {
System.out.println("hello word!");
}
}
public class DynamicProxy implements InvocationHandler {
private Object targetObject;
public Object getTargetObject() {
return targetObject;
}
public DynamicProxy(Object targetObject) {
this.targetObject=targetObject;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("start:" + method);
method.invoke(this.targetObject, args);
System.out.println("end:" + method);
return null;
}
public static void main(String[] args) {
RealSubject rs = new RealSubject();
DynamicProxy ds=new DynamicProxy(rs);
Subject subject =(Subject)Proxy.newProxyInstance(rs.getClass().getClassLoader(), rs.getClass().getInterfaces(), ds);
subject.request();
}
}
分享到:
相关推荐
代理模式★★★★★ 208 责任链模式 212 命令模式 216 解释器模式 219 迭代器模式 222 中介者模式 224 备忘录模式 226 观察者模式 230 状态模式 233 空对象模式 236 策略模式★★★★★ 238 模板模式 240 访问者模式...
662.660.JAVA基础教程_动态代理与Java8新特性-代理模式与动态代理(662).rar
* Lesson 9 [代理模式](https://github.com/AlfredTheBest/Design-Pattern/tree/master/lesson9) * Lesson 10 [工厂方法模式](https://github.com/AlfredTheBest/Design-Pattern/tree/master/lesson10) * Lesson 11 ...
代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 访问者模式 数据结构 Stack - 使用泛型...
3: 动态代理使用到基础理论:ClassLoader 加载.class字节码文件得到 , Class对象, Class对象通过 newProxyInstance 得到代理对象 4: 动态代理使用到基础理论:Class.forName("xxxx") 得到Class类 。
该文档主要整理了常见的Java基础面试题,包含以下内容: 1. 抽象类和接口的区别 2. 什么时候使用抽象类,什么时候使用接口 3. 八大基本数据类型,所占字节数 4. List、Set、Map的区别 5. 什么情况下使用List、...
结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态...
- 代理模式 - 静态代理 - 动态代理 - JDK 动态代理 - CGLIB 动态代理 - Javassist 代理 - ASM 代理 这篇文章我们来聊一下 Java 中的动态代理。 动态代理在 Java 中有着广泛的应用,比如 AOP 的实现原理、...
代理模式 静态代理与动态代理常见的动态代理实现JDK Proxy CGLIB JDK Proxy 和 CGLIB 的对比动态代理的实际应用 Spring AOP 变量 变量汇总实例变量 实例变量的特点全局变量 静态变量 静态变量的特点类变量 局部变量
计算机后端-Java-Java核心基础-第15章 面向对象07 18. 接口应用:代理模式.avi
内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...
本人的笔记,关于java基础中设计模式的内容 包括 1.作业回顾 2.内部类 2.1局部内部类 2.2静态内部类 2.3匿名内部类 3.设计模式 3.1单例模式 3.2代理模式 3.3观察者模式 3.4模板模式 4.练习
内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...
355.353.JAVA基础教程_面向对象(下)-接口应用:代理模式(355).rar
Java基础笔记分为 Java基础篇 和 Java加强篇 Java基础篇包括: 1. Java环境搭建、Java快速入门、IDEA开发工具 2. Java基础语法、类型转换、运算符、Scanner 3. 分支结构、循环结构、随机数 4. 数组详解、Debug工具...
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要...
Java 基础核心总结 java全方面基础知识 java开发人员必备 通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,...
java重点,JDBC连接数据库的操作,及其三种代理模式的介绍。
目录 一、 JavaSE 部分 1、 Java 基础 ①Java 基础部分(基本语法...①代理模式 ②装饰模式 ③适配器模式 2、 创建型模式 ①单例模式 3、 行为型模式 ①策略模式 ②观察者模式 4、 所有模式汇总 十、 场景题 十一、 UML
代理模式及动态代理是学习AOP的基础