java设计模式之——Proxy:代理模式

Java面试-企业实战面试题1 1. 选择题 1.1 在 Java 中,负责对字节代码解释执行的是(B) A. 应用服务器 B. 虚拟机 C. 垃圾回收器 D. 编译器 1.2 一个栈的输入序列为 1 2 3 4 5, 则下列序列中不可能是栈输出的序列的是(A) A. 5 4 1 3 2 B. 2 3 4 1 5 C. 1 5 4 3 2 D. 2 3 1 4 5 1.3 下列那一个选项按照顺序包括了 OSI 模型的 7 个层次... 阅读详情
代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理.代理服务器。
场景:有一个图片查看应用,每个图片都很大,载入很消耗资源,我们希望有一个界面上显示的是缩略图片,用户点击缩略图片,能够载入实际的图片。
怎样编写这个应用用代理是一种比较好的办法。

源代码:

package 代理模式;

public interface IImage {

	public void displayImage();
	
}

package 代理模式;

public class ImageDisply implements IImage {  //显示原来的图片,非常消耗资源

	@Override
	public void displayImage() {
		// TODO Auto-generated method stub
		System.out.println("显示原图。");

	}

}

package 代理模式;

public class ImageProxy implements IImage {  //代理
	
	IImage iImage;
	
	
	public ImageProxy(IImage iImage) {
	super();
	this.iImage = iImage;
	}
	
	@Override
	public void displayImage() {
		// TODO Auto-generated method stub
		System.out.println("显示缩略图效果。");
	}
	
	public void mousePress(){//当点击鼠标的时候,显示原图 
		iImage.displayImage();	
	}

}

package 代理模式;

public class TestProxy {
	
	public static void main(String[] args) {
		ImageProxy imageProxy = new ImageProxy(new ImageDisply());
		imageProxy.displayImage(); //通常情况下,显示缩略图,减少资源消耗
		imageProxy.mousePress();  //点击鼠标的时候,显示原图
	}

}


Proxy代理小结:
为其他对象提供一种代理以控制对这个对象的访问.
对于开销很大的对象,只有在使用它时才创建,这个原
则可以为我们节省很多宝贵的Java内存.
一些例子:
1.授权机制 不同级别的用户对同一对象拥有不同的
访问权利,你可以编写一个代理类来负责检查用户权
限来决定他们怎样去访问.
2.某个客户端不能直接操作到某个对象,但又必须和
那个对象有所互动.
如我们前面讲到的例子





java 常用设计模式chm 其中一个: 理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy是代理的意思,我们也许有代理服务器等概念,代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理. 设计模式中定义: 为其他对象提供一种代理以控制对这个对象的访问. 为什么要使用Proxy? 1.授权机制 不同级别的用户对同一对象拥有不同的访问权利,如Jive论坛系统中,就使用Proxy进行授权机制控制,访问论坛有两种人:注册用户和游客(未注册用户),Jive中就通过类似ForumProxy这样的代理来控制这两种用户对论坛的访问权限. 2.某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动. 举例两个具体情况: (1)如果那个对象是一个是很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏览器打开这个文档,打开文档必须很迅速,不能等待大图片处理完成,这时需要做个图片Proxy来代替真正的图片. (2)如果那个对象在Internet的某个远端服务器上,直接操作这个对象因为网络速度原因可能比较慢,那我们可以先用Proxy来代替那个对象. 总之原则是,对于开销很大的对象,只有在使用它时才创建,这个原则可以为我们节省很多宝贵的Java内存. 所以,有些人认为Java耗费资源内存,我以为这和程序编制思路也有一定的关系. 如何使用Proxy? 以Jive论坛系统为例,访问论坛系统的用户有多种类型:注册普通用户 论坛管理者 系统管理者 游客,注册普通用户才能发言;论坛管理者可以管理他被授权的论坛;系统管理者可以管理所有事务等,这些权限划分和管理是使用Proxy完成的. Forum是Jive的核心接口,在Forum中陈列了有关论坛操作的主要行为,如论坛名称 论坛描述的获取和修改,帖子发表删除编辑等. 在ForumPermissions中定义了各种级别权限的用户: public class ForumPermissions implements Cacheable { /** * Permission to read object. */ public static final int READ = 0; /** * Permission to administer the entire sytem. */ public static final int SYSTEM_ADMIN = 1; /** * Permission to administer a particular forum. */ public static final int FORUM_ADMIN = 2; /** * Permission to administer a particular user. */ public static final int USER_ADMIN = 3; /** * Permission to administer a particular group. */ public static final int GROUP_ADMIN = 4; /** * Permission to moderate threads. */ public static final int MODERATE_THREADS = 5; /** * Permission to create a new thread. */ public static final int CREATE_THREAD = 6; /** * Permission to create a new message. */ public static final int CREATE_MESSAGE = 7; /** * Permission to moderate messages. */ public static final int MODERATE_MESSAGES = 8; ..... public boolean isSystemOrForumAdmin() {   return (values[FORUM_ADMIN] || values[SYSTEM_ADMIN]); } ..... } 因此,Forum中各种操作权限是和ForumPermissions定义的用户级别有关系的,作为接口Forum的实现:ForumProxy正是将这种对应关系联系起来.比如,修改Forum的名称,只有论坛管理者或系统管理者可以修改,代码如下: 。。。。。。。。。。。。。。。 (希望对你有帮助) 立即下载

相关推荐

JAVA认证历年真题

JAVA认证历年真题_SCJP考试真题和解析

JAVA面试题(选择题)

1. 在Java中,负责对字节代码解释执行的是     A. 应用服务器 B. 虚拟机 C. 垃圾回收器 D. 编译器   2.一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈得输出序列的是( )    A. 5 4 1 3 2 B. 2 3 4 1 5 C. 1 5 4 3 2 D. 2 3 1 4 5 3. LDAP是什么?    A. 是一种开源产品 ...

nengyu的专栏 12万+

ERA5获取的风场数据转换为.dfs2文件

ERA5获取风场数据的具体步骤可以参考下面的文章下载好后应该是.nc格式的文件,想要读取或者转换成其他格式的文件可以安装下面步骤,本文介绍如何转换为.dfs2文件。

我的博客 1459

Arraylist最大容量为多少

最大容量为Integer.MAX_VALUE - 8 Arraylist的源码: private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; private static int hugeCapacity(int minCapacity) { if (minCapacity < 0) // overflow throw n...

Putatainniubou 1万+

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

综上,大多数工作均基于CLIP预训练的图像编码器和文本编码器。GlIP为解决目标检测任务提供了先例,后续很多工作常与目前较为广泛使用的目标检测网络结构相结合,从而构建新的开放词汇目标检测器。如ViLD基于Mask R-CNN、RegionCLIP基于R-CNN、VLDet和BARON基于Faster R-CNN。更具有创新性的工作是Detic,提出了使用图像分类的数据集来对目标检测器的分类头进行训练。

yangsn0719的博客 4400

保姆级教程:用GROMACS 2022.4的拉伸模拟(SMD)加速蛋白-蛋白组装过程

本文详细介绍了如何使用GROMACS 2022.4的拉伸分子动力学模拟(SMD)技术加速大蛋白组装过程。通过CHARMM36力场和SMD技术,将传统需要数月的蛋白结合过程缩短至数天,大幅提升模拟效率。文章包含参数设计、索引组创建、周期性边界处理等实战技巧,并提供了完整的GPU加速工作流和常见问题解决方案。

weixin_30338481的博客 445

Java:设计模式之代理模式Proxy

<!-- table.sample {border-width:1px; border-spacing:0px; border-style:solid; border-color:#78C0D4; border-collapse:collapse} table.sample th {border-width:1px; padding:3px; border-st

混迹于移动互联网和手机行业 1174

Unity UGUI深度优化

Unity UGUI优化相关

不定时分享所学所得,包括游戏开发和其他收获! 2717

Java设计模式:Proxy代理模式

public interface Sourceable { void method(); } public class Source implements Sourceable{ @Override public void method() { System.out.println("Source method"); } } public class Proxy...

Zhang Phil 677

【Python・统计学】(两)多因素方差分析(原理及代码)

自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~(部分定义等来源于知乎) 本文重点:多因素方差分析 【1.多因素方差分析简单原理】 【2.多因素方差分析步骤】 【3.多因素方差分析代码】

TUTO_TUTO的博客 4864

工业相机图像格式深度解析:从Mono8到Mono12的选型与应用

本文深度解析工业相机黑白图像格式,重点对比Mono8、Mono10与Mono12的核心差异。文章从位深、动态范围和数据量等关键概念切入,详细阐述了不同格式的优缺点及适用场景,为工业视觉项目中的相机选型提供实战指南,帮助用户在精度、速度与成本间做出最优决策。

weixin_29207439的博客 260

Java 设计模式:代理模式Proxy

Java设计模式之:代理模式Proxy或Surrogate  代理模式的英文叫做Proxy或Surrogate,所谓代理,就是一个人或者一个机构代表一个机构采取行动。在一些情况下,一个客户不想活着不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起起到中介作用。代理的例子:Windows系统提供的快捷方法,可以使任何对象同时出现多个地方,而不必修改原对象。对快捷方式

9818

ESP32-C3入门教程 问题篇⑳——subprocess.CalledProcessError: Command ‘[‘D:\\.espressif\\python_env\\idf5.4_py3.

ESP32-C3入门教程 问题篇⑳——subprocess.CalledProcessError: Command '['D:\\.espressif\\python_env\\idf5.4_py3.

770

JAVA设计模式之代理模式:Proxy

wangking717 写道 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 或者在一系列功能模块中加入一些扩展的功能模块,那个时候就会用到面向切面编程(AOP),其中就是用的代理。当然其中要实现代理的方式很多,本文讲解静态代理模式,其中SUN自己有提供JDK动态代理...

wangking:开源世界,人人都用上了正版啦。。。 185

流媒体服务软件-LiveNVR channeltree 未授权访问

LiveNVR 能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机 IPCamera、NVR 等具有 RTSP/Onvif 协议输出的设备接入到 LiveNVR,LiveNVR 能够将这些设备源的音/视频数据进行采集、转换、输出,进行全平台终端直播(PC、Android、iOS、微信、H5),并且LiveNVR能够将视频源的直播数据对接到第三方 CDN 网络,实现安防设备互联网级别的直播分发。对channeltree接口加上权限校验。直接访问接口即可获取数据。

iSee857的博客 1040

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java设计模式之:代理模式Proxy或Surrogate

代理模式的英文叫做Proxy或Surrogate,所谓代理,就是一个人或者一个机构代表一个机构采取行动。 在一些情况下,一个客户不想活着不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起起到中介作用。 代理的例子: Windows系统提供的快捷方法,可以使任何对象同时出现多个地方,而不必修改原对象。对快捷方式的调用完全与对原对象的调用一样。 一个名为link1的快捷方式是一个名为

WintonTalks的博客 603

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java设计模式12:代理模式(Proxy)

代理模式(Proxy) 意图 为其他对象提供一种代理以控制对这个对象的访问,可以简单理解为:在开发中,由于某些原因, 客户端不想或不能直接访问一个对象,此时可以通过一个称之为“代理”的第三者来实现间接访问,该方案对应的设计模式被称为代理模式。 适用性 1、远程代理:为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是在同一台主机中,也可是在另一台主机中,...

jay_boolean的博客 257

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java设计模式(五):Proxy (代理模式)

代理模式是通过代理对象持有被代理对象的引用,去访问代理对象的同时,在前后做一些其他逻辑来增强功能,却不用去修改被代理对象的代码。 一、静态代理 代理类和被代理类都要实现的接口: package proxy; public interface ProxiedObjectInterface { void work(); } 被代理对象: package proxy...

mjfaye的技术博客 203

JAVA设计模式(09):结构型-代理模式(Proxy)

代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。 1 代理模式概述 近年来,代购已逐步成为电

The Best Or Nothing~ 6063

Java设计模式十八:代理模式(Proxy)

为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。类图: 简单例子:有个接口Italk,people对象实现这个接口的talk()方法,有些想另外加入sing()方法,所以增加代理类talkProxy,实现两个方法.public interface ITalk{    public void talk(String msg);}public cl

萌萌的It人 www.itmmd.com 886

Java设计模式六:代理模式(Proxy)

为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。类图: 简单例子:有个接口Italk,people对象实现这个接口的talk()方法,有些想另外加入sing()方法,所以增加代理类talkProxy,实现两个方法.public interface ITalk{    public void talk(String msg);}public c...

yjc0403的博客 145

Java开发中的23种设计模式之八:代理模式(Proxy)

8、代理模式(Proxy) 其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。先来看看关系图:   根据上文的阐述

专注=效率 974

Java23种设计模式案例:代理模式(Proxy)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34309435的博客 128

《大话设计模式》读书笔记:代理模式与Java的Proxy动态代理

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 在面向对象编程中,直接引用某些对象会因为种种原因(比如对象创建的开销过大,访问需要安全控制,或者需要跳出当前进程等)带来很多问题,给用户或者系统本身带来不便或者异常。这时,就需要在操作对象(客户端)和被调用对象(真实对象)之间添加一个代理,以协助操作对象控制对被调用对象的访问,起到透明中介的作用。 代理模式的应用:一是远程

我想跟代码谈谈 4421

Java设计模式(七):代理模式Proxy(静态代理模式+动态代理模式)

静态代理 package com.iter.devbox.staticProxy; public interface Star { public void sing(); } package com.iter.devbox.staticProxy; public class RealStar implements Star { @Override publi

Happy in Code 675
上一篇: JAVA程序员应该看的书
下一篇: Java设计模式之——享元模式
freewind
博客等级 码龄16年 136粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值