桥接模式与策略者模式分析

来源:互联网 发布:嵌入式c语言应用领域 编辑:程序博客网 时间:2024/05/22 12:11

       桥接模式在于分离了实现和抽象,它将其分别放到了两个不同的类层次. 

       golf说在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。

 

      

         从上图看到了两个变化维度,一个就是implementor,一个是abstraction,前者是实现后者是抽象,那说明实现和抽象两方面都可能变化。abstraction可能派生出不同的RefinedAbstraction,而Implementor也有不同的实际implementor.

         那么这个桥就是连接两个变化维度的,RefinedAbstraction和ConcreteImplemetorA之间是通过Abstraction和Implementor发生联系,而他们两个之间本身确实松散的关系,而Abstracion聚合了几个Implementor,那Abstraction即依赖了Implementor,而最终Abstraction试图基于implementor提供的基本操作又定义了更高层次的接口,比如Operation(),它们使用了implemntor提供的抽象接口,委托于具体来实现。而本身abstracion的高层接口也进行了派生。所以说有两个变化维度。

        类似的策略者模式:

区别1:bridge为构造模式,strategy为行为模式。

区别2:在策略模式中,并不考虑Context的变化,只有算法的可替代性,而bridge具有两个维度的变化。

区别3:桥接模式强调Implementor接口仅提供基本操作,而Abstraction则基于这些基本操作定义更高层次的操作。而策略模式强调Strategy抽象接口的提供的是一种算法,一般是无状态、无数据的,而Context则简单调用这些算法完成其操作。

还有一种Builder模式,下次详谈...


 

原创粉丝点击