代理模式

代理模式

折月煮酒 提交于 2020-01-26 00:33:45
介绍  :why、meaning 代码分析  适用性 深入分析 应用分类 : 动态代理 : 优势介绍 : 应用1 : 解释:   为其他对象提供一种代理以控制对这个对象的访问。    使用场合:   1.远程代理,为一个对象在不同的地址空间提供局部代表。可以隐藏一个对象存在于不同地址空间的事实。   2.虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真是对象。例如:浏览器是用代理模式来优化下载的。   3.安全代理,用来控制真实对象访问时的权限。   4.智能指引,调用真实对象时,代理处理另外一些事儿。   代理模式,其实就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。 核心:   代理就是真实对象的代表。 示例:    接口,功能类:      代理类:         客户端: 来源: https://www.cnblogs.com/panpanwelcome/p/5566561.html

spring原理

坚强是说给别人听的谎言 提交于 2020-01-25 15:30:18
spring原理 一、spring原理 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。 Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。 Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象) 要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。 Spring里用的最经典的一个设计模式就是:模板方法模式。(这里我都不介绍了,是一个很常用的设计模式), Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了 也就基本上掌握了Spring。 二、Spring AOP与IOC 1、 IoC(Inversion of control): 控制反转 概念:控制权由对象本身转向容器

Spring代理模式及AOP基本术语

纵然是瞬间 提交于 2020-01-25 14:43:55
Spring代理模式及AOP基本术语 一: 代理模式 静态代理:代理模式 原始对象 代理对象:对原始对象的方法做了增强 动态代理 jdk的动态代理 本质:在内存中构建出接口的实现类 特点:被代理对象,必须有接口 public void jdkTest(){ //如何生成代理对象? final UserDAO dao=new UserDAOImpl(); //1参数 :被代理对象 UserDAOImpl的类加载器 //2参数 :被代对象 所属的接口 UserDAO proxy=(UserDAO)Proxy.newProxyInstance(dao.getClass().getClassLoader(), dao.getClass().getInterfaces(), new InvocationHandler() { /** * proxy:代理对象 * * method:代理对象的方法 add * * args:代理对象的方法的参数 */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("开启事务"); //真正的dao.add() Object invoke = method.invoke(dao,

Java 静态代理模式

你。 提交于 2020-01-25 13:21:45
静态代理模式 : 1.都需要实现的接口 interface person{ void print(); } 2.实现接口的类: public class stu implements person{ @Override void print(){ sout("123"); } } 3.代理对象增强实现接口的类: public class stuProxy implements person{ private stu target;     stuProxy(stu target){    this.target=target;  } public void print(t){ 执行前加代码。。。 target.print(); 执行后加代码; } } 4.stuProxy stuproxy =new stuProxy(stu); stuproxy.print(); 增强类类类类类的功能  new stuProxy(new stu()).print(); new Thread(()->{sout("234")}).start(); 线程代理模式 来源: https://www.cnblogs.com/chencn/p/12232943.html

spring注解开发-AOP(含原理)

你说的曾经没有我的故事 提交于 2020-01-25 10:39:21
一:AOP基本使用 AOP指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式; 步骤一:导入aop模块;Spring AOP:(spring-aspects) <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.12.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.12.RELEASE</version> </dependency> 步骤二:定义一个业务逻辑类;在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,环绕) public class MathCalculator { public int div(int i,int j){ System.out.println("MathCalculator...method..."); return i/j; } } 步骤三:定义一个日志切面类

代理模式

落花浮王杯 提交于 2020-01-25 05:13:51
理解     用演员和经纪人来形容代理模式最恰当不过,一个演员每天要拍电影,拍广告,拍电视剧有很多事情要做,但是每天有很多人来找他谈合作,以及各种行程需要合理安排,如果这些全都要演员自己来弄肯定忙不过来,容易出错,所以就有了经纪人(代理人),这些代理人帮演员打理行程,应对合作商,演员只需要专心于演戏就好了。演员和经纪人之间其实就是代理模式。 作用     在我们写程序的时候也经常遇到,我们的业务代码负责业务流程的控制,但是除了业务流程有时候还有一些其他的事情,比如事务的管理,对象的创建之类的,这时就需要有一个代理类能帮业务代码处理这些工作,让业务代码专心于业务流程的处理,所以就需要代理模式了。 实现     代理模式分为静态代理和动态代理之分,静态代理指的是代理类通过硬编码来创建,比较简单,而动态代理指代理类在jvm运行过程中自动创建出来,需要使用java的代理包。 静态代理 定义接口: public interface Work { public void handWork ( int giveMoney ) ; } 构建被代理者: public class Worker implements Work { @Override public void handWork ( int giveMoney ) { System . out . println ( "hard

java的静态代理和动态代理(jdk、cglib)

那年仲夏 提交于 2020-01-25 04:35:44
一、代理模式 代理的概念来自于设计模式中的代理模式,先了解一下代理模式 1、结构图 2、参与者 Subject:接口,定义代理类和实际类的共用接口 RealSubject:实际类,实现Subject这个接口 Proxy:代理类,实现Subject这个接口,内部引用一个RealSubject实际类 3、描述 Proxy实现了Subject接口,内部引用一个RealSubject实际类,RealSubject能做的Proxy都会 于是Proxy代替了RealSubject,实例化到Subject里交给客户端调用,而客户端不知道自己实际用的是谁 客户端调用了Subject接口中的Request()方法,实际上访问的是Proxy Proxy类提供了一个客户端对RealSubject的间接性访问的过程,在这个过程中可以做很多的控制 4、意图 控制对象的访问 5、应用场景 虚代理:根据需要来创建开销很大的对象,该对象只有在需要的时候才会被真正创建 远程代理:用来在不同的地址空间上代表同一个对象,这个不同的地址空间可以是在本机,也可以在其他机器上,在java里面最典型的就是RMI技术 copy-on-write代理:在客户端操作的时候,只有对象确实改变了,才会真的拷贝(或克隆)一个目标对象,算是虚代理的一个分支 保护代理:控制对原始对象的访问,如果有需要,可以给不同的用户提供不同的访问权限

jdk 动态代理的原理

余生颓废 提交于 2020-01-25 04:33:48
一、代理设计模式 代理设计模式是Java常用的设计模式之一。 特点: 01.委托类和代理类有共同的接口或者父类; 02.代理类负责为委托类处理消息,并将消息转发给委托类; 03.委托类和代理类对象通常存在关联关系,一个代理类对象与一个委托类对象关联; 04.代理类本身不是真正的实现者,而是通过调用委托类方法来实现代理功能; 二、静态代理与动态代理 按照代理类创建的时机,代理类分为两种: 01.静态代理: 由我们程序猿或者特定的工具自动生成了源代码,在程序运行之前,class文件已经存在了 ;例如在serviceImpl.java中调用dao.xx(),真正的实现者是dao,service就可以理解为一个代理类; 02.动态代理: 在程序运行期间,通过反射创建出来的代理类 ; 三、jdk动态代理 顾名思义,这种方式是由jdk为我们提供的。下面通过一个例子来演示。 01.创建一个Person接口 public interface Person { void eat(); void sleep(); } 02.创建ZhangSan.java实现Person接口 public class ZhangSan implements Person { public void eat() { System.out.println("吃饭..."); } public void sleep() {

代理模式(Proxy)

≯℡__Kan透↙ 提交于 2020-01-25 02:35:22
在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友(有点难找)、找工作等都可以通过找中介完成。 在软件设计中,使用代理模式的例子也很多,例如,要访问的远程对象比较大(如视频或大图像等),其下载要花很多时间。还有因为安全原因需要屏蔽客户端直接访问真实对象,如某单位的内部数据库等。 代理模式的定义与特点 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 代理模式的主要优点有: 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用; 代理对象可以扩展目标对象的功能; 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度; 其主要缺点是: 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢; 增加了系统的复杂度; 代理模式的结构与实现 代理模式的结构比较简单,主要是通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实主题的访问,下面来分析其基本结构和实现方法。 1. 模式的结构 代理模式的主要角色如下。 抽象主题(Subject)类

CPP 设计模式

我只是一个虾纸丫 提交于 2020-01-24 22:55:31
备忘录模式 在一个类内部记录另一个类的快照状态的模式。可以再合适的时候跳回复用 引用文字 设计备忘录的三大步骤: 设计记录的节点,存储记录 2.设计记录的存储: vector list map set 可以使 链表 图 数组 树 3.操作记录的类,记录节点状态,设置节点状态,显示节点状态 策略模式 策略模式针对一组算法,将每一个算法封装到具有共同接口的独立类中。 从而使得他们可以相互转换,策略模式可以在不影响客户端的情况下使算法发生改变。策略模式把行为和环境分离开来,环境类负责维持和查询行为类。 策略模式依赖多态,策略模式的抽象类,接口,抽象类的指针可以访问所有子类对象(纯虚函数) 各种策略的实现类。都必须集成抽象类。 策略的设置接口类。设置不同的策略 ======= 设计模式 抽象工厂模式 工厂模式: 客户类和工厂类分开。 消费者需要任何产品,只需要和工厂请求就可以了。 消费者无需修改就可以接纳新产品,缺点是当产品修改时,工厂类也要做相应的修改 ======= 设计模式 简单工厂模式 基类存放数据 派生类存放操作 再实现一个调用各个操作的静态类,调用时返回派生类指针 代码: #include <iostream> #include <string> using namespace std; class OP { public: double a; double b;