gpt4 book ai didi

java - 代理模式具体类隐藏实现细节

转载 作者:行者123 更新时间:2023-12-01 10:05:33 25 4
gpt4 key购买 nike

我一直在阅读有关 java 代理模式和调用处理程序的内容,并且到处都可以看到具体的类构造可供客户端使用。

例如,

//TwitterService service = (TwitterService) SecurityProxy.newInstance(new TwitterStub());
TwitterService service = new TwitterStub();
System.out.println(service.getTimelinePosts("abc"));

用户可以直接创建 TwitterStub 实例并访问方法。我想知道是否有一种方法可以不暴露或避免通过客户端构造具体类?

有更好的方法吗?

最佳答案

正如 GoF 所说,代理模式的目的是“为另一个对象提供代理或占位符来控制对其的访问”。

因此,在您的具体情况下,您将直接创建一个特定的代理实例。只要您(作为客户端)知道您需要特定类型的代理对象,就可以了。

如果您想要的是间接级别,则可以使用返回不同类型代理对象的抽象工厂模式。但到目前为止,代理对象的目的是代表其他对象进行操作。

顺便说一句,当您拥有创建成本高昂的对象,但您又不希望由于此类费用而必然削弱主应用程序功能时,代理非常有用。例如,假设您有一个包含 1000 张图像的文档。您可以为它们使用代理,并且仅在严格需要时加载它们(即当它们处于可见 View 中时),并且您仍然可以非常快速地加载完整文档,而无需一次读取 1000 个图像的开销。

关于java - 代理模式具体类隐藏实现细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36502840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com