0%

2.1 Decorator + Proxy

Decorator 与 Proxy 都涉及到 兄弟类之间的 修饰
Decorator 目的在于 为兄弟类 增加更多功能
Proxy 在于 控制兄弟类的接口访问

Decorator

注:Decorator 类 假如不存在,scrollDecrator依然可以直接操作component,但是中间多一个Decorator,可以提供 dynamic_cast 这种方式检查VisualComponent 是否是 Decorator的子类;并且拥有更好的类层次设计。

BorderDecorator 通过在 虚接口 Draw中调用Decorator::Draw完成组件职责外,插入了自己的工作内容。
如上所示,DrawBorder就是 BorderDecorator新引入的功能。

诚然,通过继承比如(TextView)然后重写Draw也可以达到一样的效果,但是就避免不了类爆炸

Proxy

与Decorator大同小异,可将Proxy类看作 Decrator中的Decorator类,负责代理 调用组件方法的同时,插入一些逻辑控制代码。
在 组件方法调用时,插入逻辑控制代码,就是Proxy的核心