java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java代理模式

Java设计模式中代理模式应用详解

作者:lpf_wei

代理模式(Proxy Parttern)为一个对象提供一个替身,来控制这个对象的访问,即通过代理对象来访问目标对象。本文将通过示例详细讲解一下这个模式,需要的可以参考一下

编程是一门艺术,大批量的改动显然是非常丑陋的做法,用心的琢磨写的代码让它变的更美观。

在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。找女朋友、找保姆、找工作等都可以通过找中介完成。

在软件设计中,使用代理模式的例子也很多,例如,要访问的远程对象比较大(如视频或大图像等),其下载要花很多时间。还有因为安全原因需要屏蔽客户端直接访问真实对象,如某单位的内部数据库等。

1.代理设计模式定义

代理模式:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。

2.代理设计模式的优点与不足

代理模式的主要优点有:

其主要缺点是:

也可以考虑使用动态代理

3.代理设计模式的实现思路

代理模式的结构比较简单,主要是通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实主题的访问,下面来分析其基本结构和实现方法。

代理模式的主要角色如下:

4.代理设计模式代码示例

示例场景介绍:在拍摄预览的时候,可以渲染各种特效,比如:磨皮,美白,滤镜等,但是假如不能直接渲染美妆特效,那么美妆特效就可以使用代理的方式添加。

public interface IEffect {
    String renderEffect();

}
public class EffectImpl implements IEffect {
    @Override
    public String renderEffect() {
        System.out.println("渲染美白特效成功");
        return "美白";
    }
}
public class MakeUpEffectImpl implements IEffect {
    @Override
    public String renderEffect() {
        System.out.println("渲染美妆成功");
        return "美妆";
    }
}
public class ProxyOrder  implements IEffect {
    /**
     * 代理类持有被代理的对象 ,进行操作的时候,执行的是持有的代理类的相应逻辑
     */
    private IEffect orderService = new MakeUpEffectImpl();
    @Override
    public String renderEffect() {
        System.out.println("开始渲染美妆");
        orderService.renderEffect();
        System.out.println("渲染美妆结束");
        return "增加了美妆特效";
    }
}
 public static void main(String[] args) {
        IEffect orderService = new ProxyOrder();
        orderService.renderEffect();
 }

通过代理类,进行了美妆的渲染操作,并且进行打印,可以认为对功能进行了增强。

5.代理设计模式的应用场景

当无法或不想直接引用某个对象或访问某个对象存在困难时,可以通过代理对象来间接访问。使用代理模式主要有两个目的:一是保护目标对象,二是增强目标对象。

到此这篇关于Java设计模式中代理模式应用详解的文章就介绍到这了,更多相关Java代理模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文