概述
代理模式是一种结构型设计模式,代理类管理委托类的访问权限和添加功能。
示例
假设有一个视频类,用户可以通过这个类来播放视频。但是,希望在用户播放视频之前,验证他们是否有权限。可以创建一个代理类来完成这个任务。
1 | #include <iostream> |
总结
在这个例子中,我们首先定义了一个Video接口,它有一个play方法。然后我们创建了一个RealVideo类,它实现了Video接口,并实现了play方法。
然后我们创建了一个VideoProxy类,它也实现了Video接口。VideoProxy类有一个RealVideo对象的指针,当play方法被调用时,它会创建一个RealVideo对象(如果还没有创建)并调用它的play方法。
在main函数中,我们创建了一个VideoProxy对象,并通过它来播放视频。这样,我们就可以在不改变RealVideo类的情况下,添加额外的逻辑,如权限验证。这就是代理模式的主要优点。
这个例子中并没有实现权限验证的逻辑,可以在VideoProxy的play方法中添加适当的逻辑来完成这个任务