`
lastForward
  • 浏览: 18841 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java基础之(八)代理模式

阅读更多
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个客户不想或者不能直接引用另一个对象,
而代理对象可以在客户端和目标对象之间起到中介的作用。
它分为静态代理和动态代理。
先要理解静态代理。
打个俗语:某人要找领导办事,需要送礼。但他不能直接送吧,所有就委托领导的夫人或者小舅子什么的去送礼。但最终办事的还是领导,领导夫人只是一个中介的作用。


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();
	}
}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java基础知识点总结.docx

    代理模式★★★★★ 208 责任链模式 212 命令模式 216 解释器模式 219 迭代器模式 222 中介者模式 224 备忘录模式 226 观察者模式 230 状态模式 233 空对象模式 236 策略模式★★★★★ 238 模板模式 240 访问者模式...

    662.660.JAVA基础教程_动态代理与Java8新特性-代理模式与动态代理(662).rar

    662.660.JAVA基础教程_动态代理与Java8新特性-代理模式与动态代理(662).rar

    java设计模式基础

    * Lesson 9 [代理模式](https://github.com/AlfredTheBest/Design-Pattern/tree/master/lesson9) * Lesson 10 [工厂方法模式](https://github.com/AlfredTheBest/Design-Pattern/tree/master/lesson10) * Lesson 11 ...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 访问者模式 数据结构 Stack - 使用泛型...

    java + 动态代理 + 动态代理实际应用场景

    3: 动态代理使用到基础理论:ClassLoader 加载.class字节码文件得到 , Class对象, Class对象通过 newProxyInstance 得到代理对象 4: 动态代理使用到基础理论:Class.forName("xxxx") 得到Class类 。

    Java 基础面试题

    该文档主要整理了常见的Java基础面试题,包含以下内容: 1. 抽象类和接口的区别 2. 什么时候使用抽象类,什么时候使用接口 3. 八大基本数据类型,所占字节数 4. List、Set、Map的区别 5. 什么情况下使用List、...

    Java 设计模式

    结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态...

    Java 动态代理.md

    - 代理模式 - 静态代理 - 动态代理 - JDK 动态代理 - CGLIB 动态代理 - Javassist 代理 - ASM 代理 这篇文章我们来聊一下 Java 中的动态代理。 动态代理在 Java 中有着广泛的应用,比如 AOP 的实现原理、...

    Java 基础核心总结 +经典算法大全.rar

    代理模式 静态代理与动态代理常见的动态代理实现JDK Proxy CGLIB JDK Proxy 和 CGLIB 的对比动态代理的实际应用 Spring AOP 变量 变量汇总实例变量 实例变量的特点全局变量 静态变量 静态变量的特点类变量 局部变量

    计算机后端-Java-Java核心基础-第15章 面向对象07 18. 接口应用:代理模式.avi

    计算机后端-Java-Java核心基础-第15章 面向对象07 18. 接口应用:代理模式.avi

    《Java设计模式》详解

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...

    稳稳当当学java之设计模式(12).md

    本人的笔记,关于java基础中设计模式的内容 包括 1.作业回顾 2.内部类 2.1局部内部类 2.2静态内部类 2.3匿名内部类 3.设计模式 3.1单例模式 3.2代理模式 3.3观察者模式 3.4模板模式 4.练习

    《Java设计模式》电子课件01至21章(程细柱PDF)

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...

    355.353.JAVA基础教程_面向对象(下)-接口应用:代理模式(355).rar

    355.353.JAVA基础教程_面向对象(下)-接口应用:代理模式(355).rar

    Java基础最全笔记文档

    Java基础笔记分为 Java基础篇 和 Java加强篇 Java基础篇包括: 1. Java环境搭建、Java快速入门、IDEA开发工具 2. Java基础语法、类型转换、运算符、Scanner 3. 分支结构、循环结构、随机数 4. 数组详解、Debug工具...

    Java的三种代理模式.docx

    代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要...

    Java 基础核心总结 java全方面基础知识 java开发人员必备

    Java 基础核心总结 java全方面基础知识 java开发人员必备 通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,...

    java基础难点/3

    java重点,JDBC连接数据库的操作,及其三种代理模式的介绍。

    java面试题库2021.pdf

    目录 一、 JavaSE 部分 1、 Java 基础 ①Java 基础部分(基本语法...①代理模式 ②装饰模式 ③适配器模式 2、 创建型模式 ①单例模式 3、 行为型模式 ①策略模式 ②观察者模式 4、 所有模式汇总 十、 场景题 十一、 UML

    代理模式及动态代理资料和源代码

    代理模式及动态代理是学习AOP的基础

Global site tag (gtag.js) - Google Analytics