直到现在我才知道代理模式,最近阅读了this文章,该文章说虚拟代理基本上用于推迟内存密集型组件的对象创建过程,从而加速应用程序。
但在阅读该文章之后,看起来代理模式和虚拟代理模式是相同的。我是对的还是我理解错了?
答案 0 :(得分:8)
有不同类型的代理模式。虚拟代理就是其中之一。其他(来自GOF)是保护代理,远程代理,智能参考。来自GOF:
远程代理为不同地址空间中的对象提供本地代表。
虚拟代理会根据需要创建昂贵的对象。
保护代理控制对原始对象的访问。当对象具有不同的访问权限时,保护代理很有用。
智能引用是裸指针的替代,该指针在访问对象时执行其他操作
答案 1 :(得分:0)
GoF设计模式书提到了几种代理,虚拟代理(按需创建昂贵的对象)就是其中之一。
其他类型的代理是远程代理(为不同地址空间中的对象提供本地接口),保护代理(处理访问权限)和智能引用(在访问对象时执行其他操作)。 / p>
因此,虽然虚拟代理肯定是代理,但并非所有代理都是虚拟代理。
答案 2 :(得分:0)
我们可以在创建Custom Camera时使用虚拟代理模式。
想想如果页面中有3-4个点击选项到capture_image,我们点击capture_image时每次创建相机对象都不好,因为初始化表面视图(用于在android中创建相机的视图)需要时间。因此,在这种情况下,我们可以使用虚拟代理模式在视图被销毁时使用相同的实例时间并销毁此相机对象。