设计模式-8-代理模式

简介: 代理模式(Proxy Pattern)就是提供一个代理对象,这个对象可以作为其他对象的代理来控制对其他对象的访问。一个类代表另一个类的功能。属于结构型模式。

  代理模式(Proxy Pattern)就是提供一个代理对象,这个对象可以作为其他对象的代理来控制对其他对象的访问。一个类代表另一个类的功能。属于结构型模式。

按职责来划分,通常有以下使用场景:

image.png


和适配器模式的区别:

   适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。

和装饰器模式的区别:

   装饰器模式为了增强功能,而代理模式是为了加以控制。


一、我们搞一个简单的代理模式实现图片显示

1.图片接口及实现

package com.xing.design.proxy;


/**

* 图片

* @author xing

*/

public interface Image {

/**

  * 显示图片

  */

void display();

}

实现

package com.xing.design.proxy;


/**

* 真实图片 代理的对象

* @author xing

*/

public class RealImage implements Image {

private String fileName;

public RealImage(String fileName){

this.fileName = fileName;

   System.out.println("new一个RealImage对象 " + fileName);

 }

@Override

public void display() {

   System.out.println("调用RealImage的display,显示RealImage图片:" + fileName);

 }

}

2.搞一个代理类来持有图片显示对象,核心代码

package com.xing.design.proxy;


/**

* 代理类

* @author xing

*/

public class ProxyImage implements Image{


/** 被代理的对象 */

private RealImage realImage;

/** 文件名 */

private String fileName;


public ProxyImage(String fileName){

this.fileName = fileName;

   System.out.println("new一个ProxyImage对象 " + fileName);

 }


 @Override

public void display() {

if(realImage == null){

     realImage = new RealImage(fileName);

     System.out.println("调用ProxyImage的display,通过ProxyImage代理new一个realImage对象 " + fileName);

   }else {

     System.out.println("调用ProxyImage的display,realImage对象还存在");

   }

   realImage.display();

 }

}

3.测试

package com.xing.design.proxy;


public class ProxyPatternDemo {

public static void main(String[] args) {

   Image image = new ProxyImage("1.jpg");

   image.display();

   image.display();

   System.out.println(image);

 }

}


以后再深入学习:

静态代理

JDK动态代理

cgLib的动态代理


总结:

       代理模式就是用一个代理类来管理对象的访问。


END

目录
相关文章
|
4月前
|
设计模式 C#
设计模式之代理模式(Proxy)
设计模式之代理模式(Proxy)
|
5月前
|
设计模式 XML JSON
二十三种设计模式全面解析-代理模式进阶篇:揭秘远程代理
二十三种设计模式全面解析-代理模式进阶篇:揭秘远程代理
|
4月前
|
设计模式
设计模式-代理模式
设计模式-代理模式
|
4月前
|
设计模式 数据安全/隐私保护
设计模式之代理模式
设计模式之代理模式
|
5月前
|
设计模式 缓存
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
|
2月前
|
设计模式 JavaScript Java
设计模式——代理模式
一文讲清楚设计模式中的代理模式
25 0
设计模式——代理模式
|
2月前
|
设计模式 Java 数据库连接
【重温设计模式】代理模式及其Java示例
【重温设计模式】代理模式及其Java示例
24 2
|
16天前
|
设计模式 Go 网络安全
[设计模式 Go实现] 结构型~代理模式
[设计模式 Go实现] 结构型~代理模式
|
1月前
|
设计模式 缓存 Java
23种设计模式,代理模式的概念优缺点以及JAVA代码举例
4月更文挑战第7天】代理模式是一种常用的软件设计模式,它为其他对象提供一种代理以控制对这个对象的访问。这种模式创建具有原始对象相同接口的对象,从而使代理对象在访问者和目标对象之间作为一个中介。
15 0
|
2月前
|
设计模式 uml
设计模式之代理模式
设计模式之代理模式