结构类模式大PK(总结)

结构类模式包括适配器模式桥梁模式组合模式装饰模式门面模式享元模式代理模式,它们都是通过组合类或对象产生更大结构以适应更高层次的逻辑需求。

一、代理模式VS装饰模式

代理模式把当前的行为或功能委托给其他对象执行,代理类负责接口限定:是否可以调用真实角色,以及是否对发送到真实角色的消息进行变形处理,它不对被代理类的功能做任何处理,保证原汁原味的调用。代理模式使用到极致开发就是AOP,这是采用Spring架构开发必然要使用到的技术,它就是使用了代理和反射技术。

装饰模式是在保证接口不变的情况下加强类的功能,它保证的是被装饰的对象功能比原始对象丰富(当然也可以减弱),但不做准入条件判断和准入参数过滤,如是否可以执行类的功能,过滤输入参数是否合规等,这不是装饰模式关心的。

二、装饰模式VS适配器模式

1、意图不同

装饰模式的意图是加强对象的功能,它不改变类的行为和属性,只是增加/减少功能;而适配器模式关注的则是转化,它的主要意图是两个不同对象之间的转化,关注转换。

2、施与对象不同

装饰模式装饰的对象必须是自己的同宗,也就是相同的接口或父类,只要在具有相同的属性和行为的情况下,才能比较行为是增加还是减弱;适配器模式则必须是两个不同的对象,因为它着重于转换,只有两个不同的对象才有转换的必要,如果是相同的对象还转换什么!

3、扩展性不同

装饰模式很容易扩展,可有可无。而适配器模式就不同了,它是两个不同对象之间架起的一座沟通的桥梁,建立容易,去掉就比较困难了,需要从系统整体考虑是否能够撤销。

猜你喜欢

转载自lobert.iteye.com/blog/2071051