设计模式之桥梁模式和策略模式的差别

zhchoutai zhchoutai     2022-09-09     496

关键词:

桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。下面是它们的UML结构图。

桥梁模式:
技术分享
策略模式:
技术分享
在桥接模式中,Abstraction通过聚合的方式引用Implementor。

举一个样例:

策略模式:我要画圆。要实心圆,我能够用solidPen来配置。画虚线圆能够用dashedPen来配置。

这是strategy模式。


桥接模式:相同是画圆,我是在windows下来画实心圆。就用windowPen+solidPen来配置。在unix下画实心圆就用unixPen+solidPen来配置。假设要再windows下画虚线圆。就用windowsPen+dashedPen来配置,要在unix下画虚线圆,就用unixPen+dashedPen来配置。

画圆方法中,策略仅仅是考虑算法的替换,而桥接考虑的则是不同平台下须要调用不同的工具,接口仅仅是定义一个方法。而详细实现则由详细实现类完毕。

差别:
桥接模式:不仅Implementor具有变化(ConcreteImplementor),并且Abstraction也能够发生变化(RefinedAbstraction),并且两者的变化是全然独立的,RefinedAbstraction与ConcreateImplementor之间松散耦合,它们仅仅通过Abstraction与Implementor之间的关系联系起来。强调Implementor接口仅提供基本操作。而Abstraction则基于这些基本操作定义更高层次的操作。
策略模式:并不考虑Context的变化。仅仅有算法的可替代性。强调Strategy抽象接口的提供的是一种算法。通常是无状态、无数据的,Context简单调用这些算法完毕其操作。

所以相对策略模式,桥接模式要表达的内容要很多其它。结构也更加复杂。
桥接模式表达的主要意义事实上是接口隔离的原则。即把本质上并不内聚的两种体系差别开来,使得它们能够松散的组合。而策略在解耦上还仅仅是某一个算法的层次。没有到体系这一层次。

从结构图中能够看到。策略模式的结构是包容在桥接模式结构中的,Abstraction与Implementor之间就能够觉得是策略模式。可是桥接模式一般Implementor将提供一系列的成体系的操作。并且Implementor是具有状态和数据的静态结构。

并且桥接模式Abstraction也能够独立变化。

參考:http://c610367182.iteye.com/blog/1965668
http://www.blogjava.net/wangle/archive/2007/04/25/113545.html










简单工厂模式和策略模式的差别

直接上代码:简单工厂模式:------------------------------一个抽象类  --------------------------abstractclassAbsClass{   //抽象方法:提供一些列的算法操作   publicabstract voidacceptCash(stri 查看详情

设计模式之桥梁模式20170721

行为型设计模式之桥梁模式:一、含义桥梁模式也叫做桥接模式,其定义如下:将抽象和实现解耦,使得两者可以独立地变化。只要记住一句话就行:抽象角色引用实现角色,或者说抽象角色的部分实现是由实现角色完成的。 ... 查看详情

设计模式之桥梁模式(代码片段)

设计模式之桥梁模式  桥梁模式(BridgePattern)也叫桥接模式,定义如下:Decoupleanabstractionfromitsimplementationsothatthetwocanveryindependetly.(将抽象和实现解耦,使得两者可以独立变化)通用类图四个角色1.Abstraction抽象化角色࿰... 查看详情

java设计模式之桥梁模式(代码片段)

桥梁模式:将抽象和实现解耦,使两者可以独立的变化。解释:将两个有组合关系,强耦合的对象,各自抽象然后解耦。(类关系图看https://www.cnblogs.com/blogxiao/p/9513883.html这篇文章)下面以公司生产产品为例子。1.小汽车公司生... 查看详情

策略与桥梁模式

】策略与桥梁模式【英文标题】:Strategyvs.BridgePatterns【发布时间】:2011-08-1708:06:51【问题描述】:我知道以前有人问过这个问题(例如,Whatisthedifferencebetweenthebridgepatternandthestrategypattern?)。但是,有人可以使用明确的示例解释... 查看详情

设计模式之模板方法模式和策略模式

今天看了雷神的公开课,再次学习了设计模式的五个原则以及两个设计模式的应用案例模板方法模式:定义一个算法骨架(一套业务流程),子类可以实现里面的一个或多个步骤eg:对于Spring中,Service层实现类就是一个模板,里面... 查看详情

设计模式之策略模式

策略模式属于对象行为型的设计模式定义:封装了一些列算法,它们之前可以相互替换,此模式使得算法的改变,不会影响到使用它们的客户端  策略模式有以下3个角色组成抽象策略类:所有策略类的父类,为所支持的... 查看详情

《设计模式之禅》之策略模式

一、策略模式的定义策略模式是一种比较简单的模式,也叫做政策模式,其定义如下:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使用的是面向对象的继承和多态机制,我们看看策略模式的三个... 查看详情

设计模式之策略模式

...,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。介绍意图... 查看详情

设计模式之策略模式

  软件工程师都会学习设计模式,设计模式可以说是前人智慧与经验的结晶,虽然不是哪里都用得到,但是在合适的地方使用合适的设计模式,能够带来巨大的收益。我通过学习《headfirst设计模式》,逐渐掌握这些设计方法,... 查看详情

设计模式之策略模式与责任链模式详解和应用(代码片段)

目录1.策略模式1.1目标1.2.内容定位1.3.定义1.4.应用场景1.5.促销优惠业务场景1.6用策略模式实现选择支付方式的业务场景1.7策略模式在框架源码中的体现1.8策略模式的优缺点2责任链模式2.1责任链楼式的应用场景2.2利用责任链模式... 查看详情

大话设计模式之策略模式

策略模式  定义了一系列的算法,分别封装起来,让他们之间可以互相替换。此模式让算法的改变不会影响到使用算法的客户。  在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对... 查看详情

设计模式之-策略模式

1、策略模式定义:将一系列算法封装起来,为了以后可以互相替换使用,由策略类和context组成,context接受用户信息,然后将请求委托给策略类(现实生活中,我们要去一个城市,交通方式就有:飞机、高铁、开车、大巴等,这... 查看详情

6结构型模式之-桥接模式

桥接模式的介绍:桥接模式,也称为桥梁模式,是结构型设计模式之一,在现实tgitk大家都知道“桥梁”是连接河道两岸的主要交通枢纽,简而言之其作用就是连接河的两边,而我们的桥梁模式与现实中的情况很是相似,也是承... 查看详情

设计模式之-策略模式(strategypattern)(代码片段)

...,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。 C++实... 查看详情

015设计模式之策略模式

抽象策略角色:策略类,通常由一个接口或者抽象类实现。-具体策略角色:包装了相关的算法和行为。-环境角色:持有一个策略类的引用,最终给客户端调用。 #pragmaonce//策略接口(纯虚函数)classIStrategypublic: IStrategy() virtual~IStrate... 查看详情

java之策略模式(大话设计模式)

温故而知新,每次读设计模式都会有不同的体验,坚持每天一个设计模式,直到熟练运用设计模式。策略模式定义了很多完成相同工作的算法,但实现不同,它可以以相同的方式调用所有的算法,减少了算法和调用算法的耦合。... 查看详情

行为型模式之策略模式

概述在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之为一种策略(Strategy),为了保证这些策略在使用时具有一致性,一般会提供一个抽... 查看详情