结构类模式大PK

 

结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式),结构类模式包括:适配器模式、组合模式、桥梁模式、装饰模式、门面模式、享元模式和代理模式,他们都是通过组合类或对象产生更大结构以适应更高层的逻辑需求

1、代理模式VS装饰模式

    装饰模式就是代理模式的一个特殊应用,两者的共同点是都具有相同的接口,不同点则是代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱,它着重类的功能变化。

    用举例来说明两者的区别:让一个运动员跑步,先来看看用代理模式如何来实现:

image     再来看看用装饰模式来实现让运动员跑步的实现UML图:

image       从两个图的类图上来看,两者十分的相似,就是实现代码也是非常的相似的,但是注意一点,代理模式是把当前的行为或功能委托给其他对象执行,代理类负责接口限定,它不对主题角色做任何的处理,保证原汁原味的调用,装饰模式是在要保证接口不变的情况下加强肋的功能,它保证的是被装饰的对象功能比原始对象丰富,但不准做条件判断以及参数过滤。

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

     他们的功能有类似的地方,都是包装作用,都是通过委托方式实现其功能,不同的是,装饰模式包装的是自己的兄弟类,隶属于一个家族,适配器模式则装修非血缘关系类,把一个非本家族的对象伪装成本家族的对象,注意是伪装。

     举例子来说明两者的区别,用装饰模式与适配器模式分别来描述丑小鸭。

    image      来看看适配器模式实现描述丑小鸭:这个角度是从鸭妈妈来分析的,将丑小鸭认为是鸭子,实现的UML图如下所示:

image       现在来说说这两种模式的不同之处:

       1、意图不同,装饰模式关注的是加强对象的功能,而适配器模式关注的是转换

       2、施与对象不同:装饰模式装饰的对象必须是自己的同宗,而适配器模式则必须是两个不同的对象

       3、场景不同:装饰模式在任何情况下都可以用,而适配器模式是一种补救措施

       4、扩充性不同:装饰模式容易扩充,而适配器模式建立容易,拆除难

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值