代理模式

Java设计模式之代理模式

瘦欲@ 提交于 2019-12-18 19:58:40
代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式:   人如其名,代理相信大家都可以经常看到什么什么代理,现实中代理太多了。感受最真实的是火车票的代理,经常可以在街上看到,你买票的是在代理商买的,但是付的钱依然会交给铁大哥,这就是代理。现实中的你可能会接触的例子就是叫同学去给你买票,实际上不是你去买,但是是票是你的。这也是代理。 代理模式组成:   抽象角色:通过接口或抽象类声明真实角色实现的业务方法。   代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。   真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。 代理的UML图    代理的优点:   (1).职责清晰 真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。叫你去买票,我管你有没有摔跤撒的,不需要关注这种问题。   (2).代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。别人在路上一看,以为是你同学要买票去哪里,实际上买的是你的,保护了你。   (3).高扩展性 只要符合火车站规定的人

大话设计模式---代理模式

走远了吗. 提交于 2019-12-18 15:08:18
     代理模式:为其他对象提供一种代理以控制对这个对象的访问。   代理模式应用: 远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。 如打开一个很大的HTML网页,虚拟代理替代真实图片。 安全代理,用来控制真实对象访问时的权限。 一般用于对象应该有不同的访问权限。 智能指引,是指当调用真实的对象时,代理处理另外一些事。 如第一次引用一个持久对象时,将它装入内存。 来源: https://www.cnblogs.com/nixuebing/p/4191193.html

java动态代理

流过昼夜 提交于 2019-12-18 13:38:43
1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法 举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现实中的一个例子 用图表示如下: 代理模式的关键点是:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象 1.1.静态代理 静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类. 下面举个案例来解释: 模拟保存动作,定义一个保存动作的接口:IUserDao.java,然后目标对象实现这个接口的方法UserDao.java,此时如果使用静态代理方式,就需要在代理对象(UserDaoProxy.java)中也实现IUserDao接口.调用的时候通过调用代理对象的方法来调用目标对象. 需要注意的是,代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法 代码示例: 接口

spring boot整合websocket

送分小仙女□ 提交于 2019-12-18 13:32:22
转载自: https://www.cnblogs.com/GoodHelper/p/7078381.html 一.WebSocket简单介绍   随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据。   我们知道,传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如 浏览器)主动发起,服务端进行处理后返回response结果,而服务端很难主动向客户端发送数据;这种客户端是主动方,服务端是被动方的传统Web模式 对于信息变化不频繁的Web应用来说造成的麻烦较小,而对于涉及实时信息的Web应用却带来了很大的不便,如带有即时通信、实时数据、订阅推送等功能的应 用。在WebSocket规范提出之前,开发人员若要实现这些实时性较强的功能,经常会使用折衷的解决方法: 轮询(polling) 和 Comet 技术。其实后者本质上也是一种轮询,只不过有所改进。   轮询 是最原始的实现实时Web应用的解决方案。轮询技术要求客户端以设定的时间间隔周期性地向服务端发送请求,频繁地查询是否有新的数据改动。明显地,这种方法会导致过多不必要的请求,浪费流量和服务器资源。   Comet技术 又可以分为

squid代理服务器-传统代理,透明代理

橙三吉。 提交于 2019-12-18 10:12:46
缓存代理概述 web代理的工作机制: 缓存网页对象,减少重复请求 代理的基本类型 传统代理:适用于Internet,需明确指定服务端 透明代理:客户机不需要指定代理服务器的地址和端口,是通过默认路由,防火墙将web重定向给代理 使用代理的好处 提高web访问速度 隐藏客户机的真实IP地址 一,传统代理 实验环境 squid服务器 192.168.13.179 web服务器 192.168.13.151 client测试机192.168.13.135 1,在squid服务器上安装squid代理服务器 [root@squid ~]# mkdir /abc [root@squid ~]# mount.cifs //192.168.100.3/LNMP-C7 /abc/ ##挂载 [root@squid ~]# cd /abc/ [root@squid abc]# tar zxvf squid-3.4.6.tar.gz -C /opt ##解压 [root@squid abc]# yum install gcc gcc-c++ make -y ##安装环境组件 [root@squid abc]# cd /opt/squid-3.4.6 [root@squid squid-3.4.6]# ./configure \ --prefix=/usr/local/squid \ ##安装路径 -

【转载】设计模式也可以这么简单

為{幸葍}努か 提交于 2019-12-18 05:43:23
一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的😂😂😂,花了不少心思来写这文章和做图,力求让读者真的能看着简单同时有所收获。 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four ( GoF ) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。 有一些重要的设计原则在开篇和大家分享下,这些原则将贯通全文: 面向接口编程,而不是面向实现。这个很重要,也是优雅的、可扩展的代码的第一步,这就不需要多说了吧。 职责单一原则。每个类都应该只有一个单一的功能,并且该功能应该由这个类完全封装起来。 对修改关闭,对扩展开放。对修改关闭是说,我们辛辛苦苦加班写出来的代码,该实现的功能和该修复的 bug 都完成了,别人可不能说改就改;对扩展开放就比较好理解了,也就是说在我们写好的代码基础上,很容易实现扩展。 创建型模式比较简单,但是会比较没有意思,结构型和行为型比较有意思。 创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类

动态代理的理解

本秂侑毒 提交于 2019-12-18 04:37:58
1.代理模式概述 为什么要有“代理” ? 生活中就有很多例子,例如委托业务等等,代理就是被代理者没有能力或者不愿意去完成某件事情,需要找个人代替自己去完成这件事,这才是“代理”存在的原因。例如,我现在需要出国,但是我不愿意自己去办签证、预定机票和酒店(觉得麻烦 ,那么就可以找旅行社去帮我办,这时候旅行社就是代理,而我自己就是被代理了。 代理模式的定义 : ProxyPattern (即:代理模式),23种常用的面向对象软件的设计模式之一为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 2.静态代理 以下我们借用JinLian和XiMen的例子来介绍一下静态代理 2.1不使用代理模式时 JinLian类的内部有一个happy方法,此时如果我们的XiMen类如果想要使用这个方法,正常情况下直接创建一个JinLian类调用happy方法即可 public class JinLian{ public void happy() { System.out.println("金莲happy..."); } } public class XiMen { public static void main(String[] args) { JinLian jinLian =new JinLian()

Nginx安装及配置详解

混江龙づ霸主 提交于 2019-12-18 01:28:24
转自:https://www.cnblogs.com/zhouxinfei/p/7862285.html nginx概述 nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。 这里主要通过三个方面简单介绍nginx 反向代理 负载均衡 nginx特点 1. 反向代理 关于代理 说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道; 此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户 正向代理 说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理 在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器

AOP——代理技术

╄→尐↘猪︶ㄣ 提交于 2019-12-18 00:01:38
一、如何理解代理技术 Proxy:不用你去做,别人代替你去处理。如Windows快捷方式,又如房屋中介 起到一个中介作用,通过代理对象,可以去掉客户不能看到的内容和服务或者添加客户需要的额外服务。 二、代理模式 代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问。现实世界的代理人被授权执行当事人的一些事宜,无需当事人出面,从第三方的角度看,似乎当事人并不存在,因为他只和代理人通信。 而事实上代理人是要有当事人的授权,并且在核心问题上还需要请示当事人。 在软件设计中,使用代理模式的意图也很多,比如因为安全原因需要屏蔽客户端直接访问真实对象,或者在远程调用中需要使用代理类处理远程方法调用的技术细节 (如 RMI), 也可能为了提升系统性能,对真实对象进行封装,从而达到延迟加载的目的。 代理模式角色分为 4 种: 1.主题接口:定义代理类和真实主题的公共对外方法,也是代理类代理真实主题的方法; 2.真实主题:真正实现业务逻辑的类; 3.代理类:用来代理和封装真实主题; 4.Main:客户端,使用代理类和主题接口完成一些工作。 三、具体使用 1.静态代理 /** * Created by solverpeng on 2016/6/29. */ public interface Factory { void say(); void produce(); } Factory /** *

Nginx:基本概念

☆樱花仙子☆ 提交于 2019-12-17 09:21:44
守住一方平安,尽力而为,问心无愧就好。 Nginx同Apache一样都是一种WEB服务器,Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。 本文要点: 正向代理 反向代理 负载均衡 动静分离 Nginx安装教程 1.正向代理 在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们! 上述这样的代理模式称为正向代理,正向代理最大的特点是 客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。 来看个示意图(我把客户端和正向代理框在一块,同属于一个环境,后面我有介绍): 客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址 ,还有代理程序的端口。如图。 总结来说:正向代理,"它代理的是客户端,代客户端发出请求",是一个位于客户端和原始服务器(origin