查看UML diagram on wikipedia,代理类和主题类都实现了相同的接口。
据我所知,代理类的目的是委托。这可以通过作文来完成;委托类不必实现相同的接口。
主题类是否必须实现与代理类相同的接口?
答案 0 :(得分:3)
主题类是否必须实现与代理类相同的接口?
是的,但是代理的另一种方式必须实现与主题相同的界面
客户端没有意识到它正在使用的实例是代理!客户认为这是Subject
答案 1 :(得分:1)
代理和主题应提供相同的操作集。客户端无法识别请求的实例,代理或主题。它隐藏起来。因此,两个类都实现了相同的接口。
答案 2 :(得分:1)
这更像是适配器(和对象适配器,使用Gang of Four书的术语)。当您在项目中稍后发现需要接口适配时,通常会使用适配器。你相信,你预先设计代理。
一个原因可能是代理应该对您的客户透明。如果代理具有与主题不同的接口,则此透明度将被破坏。只要想到一个用例,就不需要代理所有主题,例如并非所有物体都是“遥远的”。