我有一种特殊的集合(在面向对象的编程语言中),它提供了大量的持久性服务,但其他组件也会查询。有时我需要存储在存储库中的对象,但是我想要从其他服务中屏蔽它的类型,直到它准备就绪(例如,批准,或完成或有什么)。我通过将目标对象封装在一个不透明的“容器”类中来解决这个问题。
作为一个具体的类比,您可能会考虑类似文件系统中的目录。假设文件系统包含照相册查看器的各种照片。可能有一些照片尚未准备好发布,但您希望由文件系统管理。通过更改扩展名(即.jpg.temp而不是.jpg)或将它们隐藏在不透明的容器对象中(即将其存储在拉链或拉链中),可以将它们隐藏在相册中,同时仍然可以容器的优点和其他工具查询所有.jpg.temp文件的能力。
我只是在寻找可能描述这种情况的标准术语。 Facade和Proxy似乎与一般实现相匹配,但不符合意图。
答案 0 :(得分:1)
我认为这是一个代理。它不是Facade,Facade旨在为现有界面提供不同的界面(通常是简化的)。在你的情况下,界面保持不变,至少这是我理解你的描述(也许某种伪代码示例有助于使其更清晰)。
答案 1 :(得分:1)
伊戈尔是对的 - 绝对是代理人。
介于“保护代理”和“虚拟代理”之间。
您正在为不太准备好的对象创建一个替身,控制对它的访问。
真正的虚拟代理会在请求任何操作时创建底层资源。
保护代理控制可以访问底层对象的内容。
我说你正在做的事情离保护代理更近了,但保护代理通常意味着授权/认证。
答案 2 :(得分:0)
我认为state pattern可能是我所知道的最接近的。