15.结构型模式总结

    技术2022-06-29  73

    【目的】

             Adapter: 重新包装已有的类,进行接口转换(通过对象组合,复用已有的类)

             Bridge:  将“实现”封装到组合类中,分离“抽象”与“实现”(通过类继承,可以沿着两个方向变化)

             Composite: 让集合类实现基本类的行为,使集合对象和单个对象的使用具有一致性  

             Decorator: 通过重写指定对象的行为,增加它的职责,即动态的给一个对象增加额外职责

             Facade: 封装要使用到的子系统中的部分功能,向Client提供一个一致界面,使子系统更容易被使用

             Flyweight: 单独对待重复出现次数很多的对象,封装该类的创建过程,使同一对象在内存中只有一个,通过共享减少内存消耗

             Proxy: 通过增加一个中间层,为其它对象提供一种代理,以控制对这个对象的访问

     

    【相似点和不同点】

             1. 都用到了“对象组合”的方式,目的是使用 已有的类和对象 构建 新的类

             2. Facade, Proxy 在架构的高度使用

             3. Flyweight 考虑程序的效率问题

             4. Composite 考虑让集合方便使用

             5. 从微观上看:Adapter 使用“对象组合”,Bridge 在前者的基础上使用“组合类抽象”(使组合对象可变化),Decorator 在前者的基础上使用“类继承”(使组合可以递归)

             6. 从宏观上看:Adapter 注重“接口转换”,Brigde 注重“抽象”和“实现”分离,Decorator 注重“动态递归”的增加对象的职责(新行为=对象行为+新职责)

     

    【核心】

             “对象组合”的使用:对象具有类的所以行为,将对象组合到新的类中,就拥有了原来类的所有行为;原有行为+固定算法=新的行为,就构造出新的类;侧重于“新的行为”的是Adapter,侧重于“原有行为变化”的是Bridge,侧重于“固定算法变化”的是Decorator

     

    【优点】

             复用已有的类,根据不同的目的,用最简单的方式实现功能扩展。

             充分体现了面向对象的“开闭原则”。


    最新回复(0)