`

Bridge(桥接)和Strategy(策略)模式Summary

阅读更多

1.Bridge意图

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

 

2.Bridge适用性

你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。

 

类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。

 

bridge模式是往往是为了利用已有的方法或类。它将原来不统一,不兼容的接口封装起来,变成统一的接口。

 

3.Bridge类图

//待编辑

 

4.Bridge简单代码实现

 

 

public abstract class Abstraction {
	protected Implementor imp;//持有一个接口,在运行时动态set
	public void setImplementor(Implementor imp){
		this.imp = imp;
	}
	abstract public void operation(String str);
}

 

 

public class RefinedAbstraction extends Abstraction{
	
	public void operation(String str) {
		System.out.println(str);
		System.out.println("RefinedAbstraction.operation()");
		str = "other";
		imp.operaiontImpl(str);//实现部分调用,并可以相互传递参数
	}
}
 

 

public interface Implementor {//抽象部分接口
	void operaiontImpl(String str);
}

 

 

public class ConcreteImplementorA implements Implementor{
	public void operaiontImpl(String str) {
		System.out.println("ConcreteImplementorA.operaiontImpl()");
		System.out.println(str);
	}
}
 

 

public class Client {
	public static void main(String[] args) {
		Abstraction ab = setMyAbstraction();
		
		String str = "new";
		
		ab.operation(str);
	}

	private static Abstraction setMyAbstraction() {
		Abstraction ab = null;
		
		ab = new RefinedAbstraction();
		ab.setImplementor(new ConcreteImplementorA());
		return ab;
	}
}
 

5.Strategy(策略)

策略模式实现比较简单类似于桥接模式,则不提供源码实现。

 

意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

 

适用性:

 

strategy模式是为了扩展和修改,并提供动态配置。它往往可以在同一环境当中使用不同的策略,就是调用不同的派生类。其内部实现是自由的,不受已有的类接口的限制(很多时候根本就不调用现成的接口)。   

 

类图:

//待编辑

 

6.Bridge和Strategy区别

 

1)Bridge模式和Strategy模式相似就是因为他们都将任务委托给了另外一个接口的具体实现,他们之间的区别在于Bridge的目的是让底层实现和上层接口可以分别演化,从而提高移植性而Strategy的目的是将复杂的算法封装起来,从而便于替换不同的算法。


2)以相对策略模式,桥接模式要表达的内容要更多,结构也更加复杂。桥接模式表达的主要意义其实是接口隔离的原则,即把本质上并不内聚的两种体系区别 开来,使得它们可以松散的组合,而策略在解耦上还仅仅是某一个算法的层次,没有到体系这一层次。从结构图中可以看到,策略的结构是包容在桥接结构中的,桥接中必然存在着策略模式,Abstraction与Implementor之间就可以认为是策略模式,但是桥接模式一般Implementor将提供一系 列的成体系的操作,而且Implementor是具有状态和数据的静态结构。而且桥接模式Abstraction也可以独立变化。


 

 

 

 

分享到:
评论

相关推荐

    桥接模式和策略模式的区别,内含可运行代码和两者详细区别

    首先,桥接模式(Bridge Pattern)的核心思想是“分离抽象与实现”。它通过建立一个抽象层和一个实现层的独立继承体系,使得抽象部分和实现部分可以独立变化,形成一种解耦的设计。在桥接模式中,抽象类引用实现类的...

    Bridge 桥接模式

    C#面向对象设计模式 Bridge 桥接模式 视频讲座下载

    Bridge 桥接模式(结构型模式)

    桥接模式(Bridge Pattern)是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在软件工程中,这种分离有助于降低复杂性,提高代码的可维护性和可扩展性。桥接模式的核心...

    C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式)

    桥接模式(Bridge Pattern)是面向对象设计中的一种结构型模式,它将抽象部分与实现部分分离,使得它们可以独立地进行变化。在C#编程中,桥接模式的应用能够帮助我们更好地解耦系统,提高代码的灵活性和可扩展性。 ...

    C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) (Level 300)

    桥接模式(Bridge Pattern)是一种结构型设计模式,它旨在将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在C#编程中,这种模式尤其有用,因为随着软件系统的复杂性增加,类的继承层次可能会变得难以管理...

    ADSL桥接模式和路由模式的区别

    "ADSL 桥接模式和路由模式的区别" 在 ADSL 宽带接入方式中,桥接模式和路由模式是两种常见的工作模式。_bridge 模式是 ADSL ROUTER 的默认工作模式,主要用于单台电脑的接入,需要代理服务器或网关设备将局域网中的...

    C#面向对象设计模式纵横谈\8 结构型模式Bridge桥接模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源... 这是第8节:结构型模式Bridge桥接模式

    桥接(bridge)模式

    例如,Ant或Maven的构建配置文件(如build.xml)可以看作是桥接模式的一种体现,它们允许开发者选择不同的构建目标和执行策略,而这些策略可以通过插件系统实现。 文件列表中的".classpath"和".project"是Java ...

    设计模式之桥接模式BridgePattern

    桥接模式(Bridge Pattern)是设计模式中的一种结构型模式,它主要解决的是在软件设计中,当抽象和实现之间存在紧密耦合时,如何使这两者能够独立地变化。这种模式通过引入一个抽象层来分离接口和实现,使得它们可以...

    无线AP路由器 桥接模式和中继模式的区别.docx

    "无线AP路由器 桥接模式和中继模式的区别" 无线AP路由器是一种常见的网络设备,它可以将多个AP通过桥接或中继器的方式连接起来,形成一个无线网络。在这个无线网络中,AP可以通过桥接模式或中继模式来连接其他AP,...

    设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式

    创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...

    Bridge 桥接

    桥接模式(Bridge Pattern)是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在这个例子中,我们将会深入探讨桥接模式的概念、结构以及它在实际开发中的应用。 桥接...

    C#采用桥接装饰模式工厂模式单实例模式实现绘图

    1. **桥接模式**(Bridge Pattern): 桥接模式的核心思想是将抽象部分与实现部分分离,使它们可以独立变化。在绘图软件中,抽象部分可能是各种图形(如圆形、矩形),而实现部分则包含填充颜色、线条样式等具体细节...

    结构型模式之桥接模式(bridge)

    桥接模式是设计模式中的一种结构型模式,其主要目的是为了分离抽象部分和实现部分,以便两者能够独立地进行变化。这种模式的核心理念是通过引入一个抽象层来封装多种可能的实现,使得抽象和实现之间形成一种“桥接”...

    设计模式---桥接模式

    - 可能还包含了一些测试类或示例代码,用于展示如何使用桥接模式来创建和操作对象。 通过使用桥接模式,我们可以做到: 1. 分离抽象和实现:抽象部分和实现部分可以独立进行扩展,降低了代码的耦合度。 2. 支持多...

    Quixel Bridge与unity的桥接插件.rar

    Quixel Bridge是一款强大的纹理和材质库管理工具,它与Unity集成,为游戏开发提供高质量的PBR(物理渲染)资源。这款桥接插件允许用户直接在Unity编辑器中访问和导入Quixel库中的丰富资源,极大地提升了游戏的视觉...

    BridgePattern 桥接设计模式示例

    桥接设计模式是一种结构型设计模式,它将抽象部分与其实现部分相分离,使得它们可以独立进行变化。...在实际开发中,当面临需求频繁变更,尤其是抽象类和实现类都需要独立扩展时,桥接模式是一种非常有效的解决方案。

    网络桥接后通过iptables网络转发例子

    通过桥接转发方式共享网络,分别可以使用以下方式: 通过ETH0连接互联网,ETH1和wlan1作为下联转发eth0网络 通过wlan0连接互联网,ETH1和wlan1作为下联转发wlan0网络 通过ppp0连接互联网,ETH1和wlan1作为下联转发ppp0...

    FW150RM无线路由器怎么设置Bridge桥接模式?

    Bridge桥接模式是一种网络连接方式,它允许两个或多个网络设备,如路由器或计算机,通过无线或有线连接共享同一网络,从而扩大网络覆盖范围。FW150RM无线路由器支持Bridge模式设置,使得它可以作为主路由器的延伸,...

Global site tag (gtag.js) - Google Analytics