设计模式之代理模式

代理模式(Proxy): 为其他对象提供一种代理以控制对这个对象的访问
使用场景:

  • 远程代理:为一个对象在不同的地址空间提供局部代表,比如访问远程机器上的对象
  • 虚拟代理:根据需要创建开销很大的对象,通过他来存放实例化需要很长时间的真是对象。这样这个对象只需要实例化一次
  • 安全代理:安全代理,可以控制真是对象访问时的权限

应用举例: 1、比如买火车票可以去代售点买,而不用去火车站,代售点就可以看作是一个代理 2、比如windows里的快捷方式也可以理解为一种代理模式,可以去软件安装目录里点击打开,也可以直接点击快捷方式打开,快捷方式就是一个代理类
类图:
在这里插入图片描述
代码例子:通过代理类从远程磁盘读取一张图片,第一次需要从磁盘进行加载,第二次则直接进行展示

public interface Image {
    void display();
}
//实际被访问的对象
public class RealImage implements Image {
    public RealImage() {
        System.out.println("loading image from disk...");
    }
    @Override
    public void display() {
        System.out.println("image showing...");
    }
}
//代理类,持有一个ProxyImage对象,然后外部通过proxy间接访问对象
public class ProxyImage implements Image {
    private RealImage realImage;
    @Override
    public void display() {
        if (realImage == null) {
            realImage = new RealImage();
        }
        realImage.display();
    }
}
public class Client {
    public static void main(String[] args) {
        ProxyImage proxyImage = new ProxyImage();
        proxyImage.display(); //第一次需要从磁盘加载

        proxyImage.display();  //第二次不用
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值