`
lichaozhangobj
  • 浏览: 100872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

桥模式

阅读更多

将抽象化与实现化脱耦,使得二者可以独立变化。该模式的目标是通过把高层的抽象和底层的实现分开,分别构建自己的类层次结构,并通过实现部分的接口将两部分进行桥接,从而达到高层抽象和底层实现可以独立的方便扩展的目的。其核心是分离,和委托。

 

在以下的情况下应当使用桥梁模式:

如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。

设计要求实现角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。

一个构件有多于一个的抽象化角色和实现化角色,系统需要他们之间进行动态耦合。

 

public class Point {

    private int coordinateX;
    private int coordinateY;
    
    public Point(int coordinateX, int coordinateY) {
        this.coordinateX = coordinateX;
        this.coordinateY = coordinateY;
    }
    @Override
    public String toString(){
        return "Point[x=" + coordinateX + ",y=" + coordinateY + "]";
    } 
}

 

 

public interface Draw {

    public void drawLine(Point startPoint, Point toPoint);
}

 

 

/**
 * Unix
 */
public class UnixDrawImpl implements Draw {

    public void drawLine(Point startPoint, Point toPoint) {
        System.out.println("Unix drawLine " + startPoint + "," + toPoint);
    }
}

 

 

/**
 * Win
 */
public class WinDrawImpl implements Draw{

    public void drawLine(Point startPoint, Point toPoint) {
        System.out.println("Win drawLine " + startPoint + "," + toPoint);
    }
}

 

 

/**
 * 形状
 */
public abstract class Shape {

    protected Draw draw;

    public Shape(Draw draw) {
        this.draw = draw;
    }

    public abstract void drawShape();
}

 

 

/**
 * 正方形
 */
public class Square extends Shape {

    public Square(Draw draw) {
        super(draw);
    }

    @Override
    public void drawShape() {
        draw.drawLine(new Point(0,0), new Point(10,0));
        draw.drawLine(new Point(0,0), new Point(0,10));
        draw.drawLine(new Point(0,10), new Point(10,10));
        draw.drawLine(new Point(10,0), new Point(10,10));
    }
}

 

 

/**
 *三角形
 */
public class Triangle extends Shape {

    public Triangle(Draw draw) {
        super(draw);
    }

    @Override
    public void drawShape() {
        draw.drawLine(new Point(0,0), new Point(10,0));
        draw.drawLine(new Point(0,0), new Point(5,10));
        draw.drawLine(new Point(5,10), new Point(10,0));
    }
} 

 

public class Client {
    public static void main(String[] args) {
       
        Draw winDraw = new WinDrawImpl();
        Draw unixDraw = new UnixDrawImpl();
        
        //Win绘制正方形
        System.out.println("Win绘制正方形");
        Shape winSquare = new Square(winDraw);
        winSquare.drawShape();
        //Unix绘制正方形
        System.out.println("Unix绘制正方形");
        Shape unixSquare = new Square(unixDraw);
        unixSquare.drawShape();
        //Win绘制三角形
        System.out.println("Win绘制三角形");
        Shape winTriangle = new Triangle(winDraw);
        winTriangle.drawShape();
        //Unix绘制三角形
        System.out.println("Unix绘制三角形");
        Shape unixTriangle = new Triangle(unixDraw);
        unixTriangle.drawShape();
    }
}

 

分享到:
评论

相关推荐

    设计模式之桥梁模式

    **桥梁模式(Bridge Pattern)详解** 桥梁模式是一种结构型设计模式,它将抽象部分与实现部分分离,使得它们可以独立地进行变化。这种模式的主要目的是为了将抽象化和实现化解耦,使得两者可以独立发展,增加了系统...

    C++设计模式课件7_桥模式.pdf

    ### Bridge桥模式详解 #### 一、桥模式概述 **桥模式**(Bridge Pattern)是一种结构型设计模式,它的核心思想在于将一个类的接口与其具体实现分离开来,从而使两者能够独立变化。这种模式通过引入一个抽象层来...

    设计模式之桥梁模式实现

    桥梁模式(Bridge Pattern)是设计模式中的一种结构型模式,它的核心思想是将抽象部分与实现部分分离,使得它们可以独立地进行变化。在这个主题中,我们将深入探讨桥梁模式的原理、结构以及如何在Java中实现。 首先...

    LEDE项目:桥模式1

    LEDE项目:桥模式1 LEDE项目中的桥模式是一种特殊的操作模式,允许网关设备将所有流量转发到下游设备,使得设备可以在不同的网络环境中工作。在本文中,我们将详细介绍桥模式的工作原理、类型和应用场景。 桥模式...

    桥模式Bridge.rar

    桥模式是一种设计模式,主要目的是将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在"桥模式(Qt平台)"中,我们将会看到如何在Qt框架下应用这个模式来增强软件的可扩展性和灵活性。Qt是一个流行的开源跨...

    C++设计模式代码资源7_桥模式.zip

    桥模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使它们可以独立进行变化。在C++中,这种模式尤其有用,因为它允许我们通过指针或引用灵活地组合对象,从而实现多态性。 桥模式的核心在于将抽象...

    SCALANCE W 桥模式使用指南.zip

    **SCALANCE W 桥模式使用指南** 西门子的SCALANCE W系列是专为工业无线网络设计的一系列产品,它们提供了灵活、安全的无线连接解决方案。在桥模式(Bridge Mode)下,SCALANCE W设备可以作为两个或多个网络之间的...

    基于LINUX下桥模式的入侵检测系统的研究.pdf

    【基于Linux下桥模式的入侵检测系统研究】 在网络安全领域,入侵检测系统(Intrusion Detection System, IDS)扮演着至关重要的角色。传统的IDS通常分为基于网络的(NIDS)和基于主机的(HIDS)。NIDS通过监听网络...

    SANGFOR_WOC_v9.1_双网桥模式部署配置指导书.pdf.pdf

    《SANGFOR_WOC_v9.1_双网桥模式部署配置指导书》是由深信服科技有限公司编写的,旨在为用户提供详细的操作指南,帮助他们正确配置和部署双网桥模式的SANGFOR_WOC设备。文档包含了版本信息、修订历史以及使用反馈的...

    LEDE项目:可怜的人桥模式1

    《LEDE项目:可怜的人桥模式1》 在IT行业中,网络配置是一项至关重要的任务,特别是在家庭或小型企业网络环境中。本文主要探讨的是在没有硬件桥接功能的情况下,如何通过LEDE路由器实现一种称为“可怜的人桥模式”...

    桥梁模式DEMO

    《桥梁模式DEMO》 桥梁模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使它们可以独立地进行变化。这个模式的核心思想是将抽象类与实现类解耦,使得两者可以通过多态性独立发展,从而提高了系统的可扩展...

    学习php设计模式 php实现桥梁模式(bridge)

    - **状态模式**:状态模式关注于对象状态的转换,而桥梁模式处理的是抽象与实现的关系,两者在结构上有相似之处,但在应用场景上不同。 ### 五、PHP 示例 在给定的PHP代码示例中,`Abstraction` 类定义了抽象化...

    西门子SCALANCE W桥模式使用指南.zip

    西门子SCALANCE W桥模式使用指南zip,西门子SCALANCE W桥模式使用指南: 本文描述了SCALANCE W模块中的一些桥功能,例如VLAN和生成树协议。并阐述了桥功能协议的基本原理。而且通过一些具体的配置实例说明了使用这些...

    行业资料-交通装置-一种基于桥模式的数据库审计方法.zip

    行业资料-交通装置-一种基于桥模式的数据库审计方法.zip

    Java设计模式之桥模式(Bridge模式)介绍

    桥模式(Bridge模式)是一种设计模式,主要用于将抽象部分与实现部分解耦,使得它们能够独立地变化。在Java中,这种模式可以帮助我们构建更加灵活和可扩展的系统。以下是关于桥模式的详细解释: 首先,理解桥模式的...

    设计模式学习之桥模式

    桥模式:将对摸个问题抽象的不同形式分别于该问题的具体实现部分相互分离,是它们都可以独立的裱花,并且能动态的结合。这个模式是面向对象的接口隔离原则的典型实现和具体的应用。使用桥模式可以讲对问题的抽象的...

    无线网桥应用模式

    中继网桥可以由单个桥接器配备分路器,或者两个桥接器背靠背工作于不同频段的无线网桥模式,以满足不同带宽需求。 总的来说,无线网桥在远程网络互连中扮演着重要角色,其应用模式多样,能够适应各种复杂的环境和...

    设计模式实例 装饰 工厂 桥梁 观察者

    设计模式是软件工程中的一种最佳实践,用于解决在开发过程中经常遇到的问题,提供了一种标准的解决方案。在Java编程中,设计模式的应用广泛且至关重要,能够提高代码的可读性、可维护性和可扩展性。以下是对标题和...

    java设计模式

    30.1 工厂方法模式VS建造者模式 30.1.1 按工厂方法建造超人 30.1.2 按建造者模式建造超人 30.1.3 最佳实践 30.2 抽象工厂模式VS建造者模式 30.2.1 按抽象工厂模式生产车辆 30.2.2 按建造者模式生产车辆 30.2.3 最佳...

    软件设计模式经典案例讲解

    本篇文章将深入探讨几种经典的设计模式:模板方法模式、外观模式、代理模式、装饰器模式、桥模式、工厂方法模式以及组合模式。 首先,模板方法模式(Template Method Pattern)是行为设计模式的一种,它定义了操作...

Global site tag (gtag.js) - Google Analytics