3.1.4 结合委托与反射的优势
反射加上有效的面向对象设计,能够使程序更加灵活。
在委托模式中,通过 改变代理 能够在运行时 改变程序行为,在普通代理模式中,可变化的 行为总数 与 委托类总数 相等。如果没有反射,则委托的数量在 编译时 就固定下来,应用能变化的行为数量也固定下来,通过反射,委托可以在运行时确定,从而使委托数量可以 无限扩展。
- 可以在运行时加载新的
Facade
扩展应用行为,同样,新的命令、策略、状态都可以 动态加载 到应用中,以扩展应用的行为。 - 使用动态加载、反射构造可以 泛化 工厂方法,同样,其他类似的 构造类设计模式 也能通过反射进行 泛化(
Builder
Abstract Method
模式等)。 - 动态加载、反射构造不是唯一的能够扩展应用行为的技术,第四章的代理(
proxy
)、第七、八章的反射代码生成都可以达到类似效果。