模式区别
代理:
给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。
核心解读:代理类对被代理对象有控制权,决定是否执行等操作
装饰: 又名Wrapper模式,以对用户透明的方式来扩展对象的功能,是继承的一种替代方案
核心解读:源对象接口完全一致,对控制对象没有控制权,只是增加一层装饰以加强功能,仅此而已。
透明和半透明:透明是接口完全一致增强功能,不改变接口,半透明是改变接口,不改变功能。
意图:不让客户端察觉它所使用的是一个装饰类,而不是原始流对象。
适配器:把一个类的接口转换成客户端所期待另一种接口,从而使原本因为接口不匹配无法工作的类,能够一起工作。
核心解读:不要求对源对象接口增强。但是可以改变源对象接口,以便和目标接口相符合。
如XMLProperties工程,是把DocumentHandler适配成Properties接口的能力。
策略模式:
针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使他们可以互相替换。策略模式使得算法可以在不 影响客户端的情况下发生改变。