结构型模式-代理模式

Posted heibingtai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构型模式-代理模式相关的知识,希望对你有一定的参考价值。

 

 

代理模式:为某个对象提供一种代理以控制对这个对象的访问。(在某些情况下,一个对象不适合或者不能直接引用另一个对象,而“代理对象”可以在客户端和目标对象之间起到中介的作用)

  代理模式作用:1. 隐藏被代理类的具体实现;

         2.实现客户端与被代理类的解耦,在不改变被代理类代码的情况下添加一些额外(日志、权限等)功能。

  简单使用:

 

//接口
public interface Image { void display(); }

  

//被代理类
public class RealImage implements Image { private String fileName; public RealImage(String fileName) { this.fileName = fileName; loadFromDisk(fileName); } private void loadFromDisk(String fileName) { System.out.println("Loading " + fileName); } @Override public void display() { System.out.println("Displaying " + fileName); } }

  

//代理类
public class ProxyImage implements Image { private RealImage realImage; private String fileName; public ProxyImage(String fileName) { this.fileName = fileName; } @Override public void display() { if (realImage == null) { realImage = new RealImage(fileName); } realImage.display(); } }

  

//测试
public class ProxyPatternDemo { public static void main(String[] args) { Image image = new ProxyImage("test_img.jpg"); image.display(); System.out.println(); image.display(); } }

  

  

 





以上是关于结构型模式-代理模式的主要内容,如果未能解决你的问题,请参考以下文章

Python 设计模式 — 结构型模式 — 代理模式

[设计模式C++go]结构型模式:代理模式

[设计模式C++go]结构型模式:代理模式

[设计模式C++go]结构型模式:代理模式

设计模式-用代理模式(Proxy Pattern)来拯救你的代码:打造可靠的程序设计

设计模式结构型(代理模式桥接模式装饰者模式适配器模式)