设计模式之代理模式

一 基本概念:

在代理模式中,创建现有对象的对象,向外界提供功能接口,为其他对象提供一种代理以控制对这个类的访问
注意:与适配器模式的区别:适配器模式主要改变所考虑对象的接口,代理不能改变所代理类的接口;与装饰器模式的区别:装饰器是为了增加功能,代理是为了加以控制;

二 优点:

职责清晰
高扩展化

三 缺点:

由于在客户端和真实主题之间有了代理对象,会导致请求的处理速度变慢
实现代理模式会增加额外的工作

四 适用情景:

Spring aop
windows快捷方式
防火墙代理

代码样例:
//realImage和proxyImage都要实现的接口
public interface Image{
void display();
}
//reallmage
public class RealImage implements Image{
private String fileName;

public RealImage(String fileName){
	this.fileName = fileName;
	loadFromDisk(filaName);
}
public void display(){
	System.out.println("Displaying"+fileName);
}
public void loadFeromDisk(){
System.out.println("Loading"+fileName);
}
}

//proxyImage

public class ProxyImage implements Image{	
private RealImage 	realImage;
private String fileName;

   public ProxyImage(){
	this.fileName = fileName;
}
public void display(){
if(realImage==null){
realImage = new RealImage("fileName");
}
realImage.display();
}
}

//外部类调用代理对象

public class ProxyImageDemo{
public static void main(String args[]){
Image image = new ProxyImage("this is a proxy");
//第一次调用会从内存加载
image.display();
//第二次不需要加载
image.display();
/*输出情况*/
Loading this is a proxy
Displaying  this is a proxy
Displaying  this is a proxy	
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值