Aha!设计模式(67)-代理模式(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/craftsman1970/article/details/89317635

意图
 

为对象提供一种代替机制以实现更透明或者更小代价的访问。

动机

例如我们有一个股票交易信息表示模块,根据事先设定好的颜色,曲线的类型等信息,接受来自通讯模块的数据并进行表示。但是有一个比较特殊的需求是需要表示的屏幕的物理位置和数量都要可以定制。最简单的情况是在接收数据的电脑上直接表示,也可能要交易大厅的大屏幕上表示,或者两者都需要。

解决这个问题的一个可行的办法就是使用代理对象Proxy来替代真正的显示模块。从通讯模块的立场来看,Proxy就是一般的显示模块,但是其内部会处理不同的数量,不同类型的屏幕。以下是这个方案的类图。

首先,Display定义显示装置的接口,使用这些接口可以开始和停止显示,可以设定颜色和发送数据。然后LocalDispaly和LedDisplay实现了这些接口,分别支持电脑屏幕显示和LED大屏幕显示。接下来的RemoteDisplay虽然也实现了同样的接口,但是并不会直接提供真正的显示,而是负责将命令发送到远方的显示装置。最后是MultiDisplayProxy,它也不提供实际的显示功能,但是可以将显示接口的访问转发到事先登录的其他显示对象。

客户根据实际的需求,使用这四个类的组合,就可以实现多屏幕,多类型,多地点的显示功能。

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

猜你喜欢

转载自blog.csdn.net/craftsman1970/article/details/89317635
今日推荐