设计模式学习笔记(一): Bridge 模式

来源:互联网 发布:淘宝客团队 编辑:程序博客网 时间:2024/05/17 04:18

今年5月的时候制定goal的时候提到了要看一本设计模式的书,结果到现在了还啥也没看。决定每天看一点,学习的文章来自网站http://sourcemaking.com/design_patterns/   主要是按自己的理解翻译记录一下,可能错误会比较多。

 

 

最近半年开发的项目都是跨PC和Mac的,Bridge模式中的接口和实现分离见的的比较多。

Bridge 模式

目的 :

1) 将抽象和具体实现间解耦合,这样让两者保持独立性。

2) 将接口发布在一个继承关系层,将实现隐藏在它自己的继承关系层。

3) 在封装之外在加上隔离

 

动机:

对于下图所示的线程分配系统

如果再加入一种平台

如果加入更多种平台呢,要添加的具体实现内将会很多。

所以Bridge模式的解决办法是将继承关系抽离出两个正交的关系。接口独立于平台,而实现依赖于平台。

讨论:

何时使用Bridge模式:

1)当你希望具体实现运行时绑定

2)当你遇到一个接口和数量可观的实现之间的耦合导致的类扩散问题。(proliferation of classes)

3)当你希望在多个对象之间共享实现

4)当你需要映射正交的类结构时

 

规则提要:

1) Adapter模式针对对象被设计好之后,Bridge模式针对对象设计前

2)Bridge模式被设计用于将抽象接口和具体实现分离。而Adapter模式让不相关的类能合作

3)State、Strategy、Bridge(某些Adapter)具有类似的解决方案结构。因为它们分享了“handle/body”idiom的元素。它们的不同在于目的--解决不同的问题

4)State和Bridge模式的结构是一致的(除了Bridge承认envelope classes的分层,而State只有一层)。两者用相同的结构解决不同的问题:State允许一个对象的行为随着它的状态改变,而Bridge的目的是解耦抽象和实现以使二者在依赖性上独立。

5)如果接口类代理了具体实现的创建(而不是直接创建/耦合它们),那么这种设计通常就会用Abstract Factory模式来创建具体实现对象。

 

原创粉丝点击