个人对桥接模式和装饰模式区别的理解

一、示例代码

  以下是csdn上别人写的【装饰模式】和【桥接模式】的示例代码,我们先看一下,然后再尝试找两种设计模式的区别和类似点。

  【装饰器模式示例链接

  【桥接模式示例链接

 

二、个人的一点粗浅理解

1、类似点

  ① 两种设计模式都是将一个【事物】抽象出来后,多态实现了这个事物的【公有性的操作】。并且用一个【持有者】类(例如装饰器类)持有一个这样【事物】。

 

2、不同点

  ① 装饰模式:【持有者】抽象类会继承【事物】类,方便在此基础上增加装饰操作。

      桥接模式:【持有者】抽象类是独立的。

  ② 装饰模式:【持有者】抽象类也就是【装饰器抽象类】会直接使用【事物】的【公有性的操作】。

      桥接模式:【持有者】抽象类不会使用【事物】的【公有性的操作】,而是继续【保持纯虚】。

      注:第②点跟个人实现习惯和当时的代码设计有一定的关系,例如我在使用【桥接模式】时,会直接在【持有者】抽象类种调用【事物】的【公有性的操作】。

  ③ 装饰模式:【持有者】的【具体实现类】中,会通过【父类:func】的方式调用抽象类的【公有性的操作】,且增加一些自己的操作作为【装饰】。

      桥接模式:【持有者】的【具体实现类】中,不管调用形式如何(例如②的注中提到的),都是直接使用【事物】的【公有性的操作】,而不会在此基础上增加自己的行为。

 

  综上:其实本质上来说,【装饰模式】中【持有者】类会继承【事物】类,以及【装饰模式】会在【事物】的【公有性的操作】基础上,【增加自己的私有行为】作为【装饰】,这两个方面有【本质差别】,其它方面真的都非常类似,这里记录一下个人的粗浅理解也是为了今后在使用这两个模式的时候不再出现模糊的感觉。

 

posted @ 2024-04-17 18:20  J&YANG  阅读(12)  评论(0编辑  收藏  举报