概述
GOF的设计模式中的Proxy和Facade都是给客户端提供一个对象,客户端只需要访问这个对象就能达到使用系统中的各种功能的目的。这两个模式功能一样,为什么要区分成两种模式呢?
翻书后我从原文(中文)找到了它们的差别。
原文对Proxy的介绍是:
对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化。我们考虑一个可以在文档中嵌入图形对象的文档编辑器。有些图形对象( 如大型光栅图像) 的创建开销很大。但是打开文档必须很迅速, 因此我们在打开文档时应避免一次性创建所有开销很大的对象。因为并非所有这些对象在文档中都同时可见, 所以也没有必要同时创建这些对象。这一限制条件意味着, 对于每一个开销很大的对象, 应该根据需要进行创建, 当一个图像变为可见时会产生这样的需要。但是在文档中我们用什么来代替这个图像呢? 我们又如何才能隐藏根据需要创建图像这一事实, 从而不会使得编辑器的实现复杂化呢? 例如, 这种优化不应影响绘制和格式化的代码。问题的解决方案是使用另一个对象, 即图像Proxy , 替代那个真正的图像。Proxy 可以代替一个图像对象, 并且在需要时负责实例化这个图像对象。
也就是说,Proxy可以提供更好的性能,代价是客户端调用Proxy的时候其实Proxy背后的系统可能并没有真的初始化好了。
Facade在原文中的介绍是:
当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性, 也更容易对子系统进行定制, 但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade 可以提供一个简单的缺省视图&#x
最后
以上就是朴实发夹为你收集整理的我对代理模式和外观模式区别的看法的全部内容,希望文章能够帮你解决我对代理模式和外观模式区别的看法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复