《Head First 设计模式》 第十、十一章 状态模式、代理模式
原则
模式
关联
状态模式
模式
状态模式
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类
关联
与策略模式的差别
类图与策略模式一致,这两个模式的差别在于它们的意图。
一般来说,我们把策略模式想成是除了继承之外的一种弹性替代方案。如果你使用继承定义了一个类的行为,你将被这个行为困住,甚至要修改它都很难。有了策略模式,你可以通过组合不同的对象来改变行为。
我们把状态模式想成是不用在 context 中放置许多条件判断的替代方案。通过将行为包装进状态对象中,你可以通过在 context 内简单地改变状态对象来改变 context 的行为。
代理模式
模式
代理模式
为另一个对象提供一个替身或占位符以控制对这个对象的访问。
关联
Spring 的 AOP 用到了动态代理
Mybatis 用到了动态代理