Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 如何在MVC中使用代理模式_Design Patterns_Model View Controller_Proxy Pattern - Fatal编程技术网

Design patterns 如何在MVC中使用代理模式

Design patterns 如何在MVC中使用代理模式,design-patterns,model-view-controller,proxy-pattern,Design Patterns,Model View Controller,Proxy Pattern,作为一个更大的学校项目的一部分,我有一个使用MVC模式的应用程序设计,现在有一个新的要求,添加一个远程监控站。似乎代理模式最适合远程监视器,但。。。将代理挂接到视图中有意义吗?或者我需要其他东西,比如适配器。。。或者挂接到模型中并在客户端使用新的视图/控制器 这里是我试图描述的一个基本UML示例 您可以在控制器访问代理以检索其数据的情况下对此进行建模,然后将该数据包含在模型中以供视图显示。这将允许您执行某些操作,例如从客户端隐藏API访问密钥或其他凭据,这在使用许多第三方服务时非常重要。这还允许

作为一个更大的学校项目的一部分,我有一个使用MVC模式的应用程序设计,现在有一个新的要求,添加一个远程监控站。似乎代理模式最适合远程监视器,但。。。将代理挂接到视图中有意义吗?或者我需要其他东西,比如适配器。。。或者挂接到模型中并在客户端使用新的视图/控制器

这里是我试图描述的一个基本UML示例


您可以在控制器访问代理以检索其数据的情况下对此进行建模,然后将该数据包含在模型中以供视图显示。这将允许您执行某些操作,例如从客户端隐藏API访问密钥或其他凭据,这在使用许多第三方服务时非常重要。这还允许您在控制器级别缓存来自代理的值,或者更可能是控制器和代理之间的注入方面[即,另一个代理]

有一些情况下,你会从客户端和Web应用程序中考虑这个问题,你可能会逻辑地思考在视图中的解决方案,只要你可以逻辑地思考JavaScript。实际上,实际的设计是,您的客户机代码存在于视图中,该视图分解为自己的UML模型,其中有控制器、模型、视图等。在服务器后端缓存不重要的情况下,或者在敏感凭据信息不应离开客户机的情况下,您可以这样做


当您将JavaScript从等式中移除,并且只考虑普通的MVC设计时,我认为最好让控制器访问代理。

远程监控站是否包含您将在视图中显示的数据?@cfeduke是的,将视图视为显示硬件状态的显示面板,例如温度传感器值,远程监控系统通过智能手机或web界面等显示相同的状态/值。感谢您的帮助和指导。我还没有处理过访问密钥或其他类型的凭证,但您已经给了我一些想法,让我知道在进一步研究这个问题时应该追求什么。