首页 > 其他分享 >Bridge Pattern

Bridge Pattern

时间:2023-09-05 23:00:22浏览次数:32  
标签:桥接 Bridge color Pattern void Color 抽象 public

What is Bridge Pattern

桥接模式(Bridge Pattern),旨在将抽象部分和实现部分解耦,使它们可以独立地变化。该模式通过将抽象和实现分离,使它们可以独立地进行扩展和修改,同时通过桥接(Bridge)将它们连接起来。

将一个事物原本耦合在一起的东西,通过定义成抽象和实现两个维度,做到解耦,解耦就是为了能组成更多的组合

怎么划分抽象和现实?
在桥接模式中,抽象部分和实现部分是两个相对的概念,只是用于表示系统中的两个不同维度或变化的方向,谁是抽象、谁是具体并不是很重要,重要的是解耦出两个维度就行。

Example

好的,下面是一个用 Java 代码举例说明桥接模式的示例:
首先,我们考虑一个图形绘制的场景,其中有多种不同的图形(如圆形、矩形)和多种不同的颜色(如红色、蓝色)。我们将使用桥接模式来实现图形和颜色的解耦。

定义抽象

// 定义抽象部分的接口 Shape,其中声明了绘制图形的抽象方法
public interface Shape {
    void draw();
}

// 定义实现部分的接口 Color,其中声明了填充颜色的抽象方法
public interface Color {
    void fill();
}

//接着,实现具体的图形类,例如 Circle 和 Rectangle:
public class Circle implements Shape {
    private Color color;

    public Circle(Color color) {
        this.color = color;
    }

    public void draw() {
        System.out.print("绘制圆形,");
        color.fill();
    }
}

public class Rectangle implements Shape {
    private Color color;

    public Rectangle(Color color) {
        this.color = color;
    }

    public void draw() {
        System.out.print("绘制矩形,");
        color.fill();
    }
}

具体的颜色类,例如 RedColor 和 BlueColor:

public class RedColor implements Color {
    public void fill() {
        System.out.println("填充红色");
    }
}

public class BlueColor implements Color {
    public void fill() {
        System.out.println("填充蓝色");
    }
}

最后,在客户端代码中使用桥接模式来绘制图形:

public class Client {
    public static void main(String[] args) {
        Shape circle = new Circle(new RedColor());
        circle.draw();

        Shape rectangle = new Rectangle(new BlueColor());
        rectangle.draw();
    }
}

out

绘制圆形,填充红色
绘制矩形,填充蓝色

标签:桥接,Bridge,color,Pattern,void,Color,抽象,public
From: https://www.cnblogs.com/mysticbinary/p/17681110.html

相关文章

  • Template Pattern —— Behavioral Class
    HookMethod钩子方法(HookMethod)之所以被称为“钩子”,是因为它在算法或流程中提供了一个“钩子”,允许子类在特定的点上“钩入”自己的实现逻辑,从而影响算法的行为或流程的执行。它类似于一个挂钩、锚点,所以叫Hookmethod,它允许子类插入自定义的代码来改变或扩展算法的功能。T......
  • Flyweight Pattern —— Creational Class
    享元模式在主流的标准里是放到结构大类下的,但是我感觉这个模式的最终作用也是为了获取一个类,所以我将其划分到创建大类下。WhatisFlyweightPatternFlyweight是指轻量级的。享元模式旨在支持大量细粒度的对象共享,以减少内存消耗。该模式通过共享相似对象的部分状态,来减少对......
  • CF1848B Vika and the Bridge 题解
    CF1848BVikaandtheBridge题解题目大意给个题目传送门吧,感觉题意已经很清楚了题目传送门分析(我不会告诉你我第一眼看过去是二分)因为我们只能改一块木板的颜色,所以可以考虑贪心。大概算了下复杂度,也没有问题。题解我们要去求每种颜色最大距离的最小值,那我们可以先去求......
  • Factory Pattern —— Creational Class
    core工厂模式(FactoryPattern)是一种创建型设计模式,用于创建对象而不暴露对象创建的逻辑。它将对象的实例化过程封装在一个工厂类中,客户端通过调用工厂类的方法来创建对象,从而实现了解耦和灵活性。工厂模式的核心思想是将对象的创建与使用分离。客户端不直接实例化对象,而是通过调......
  • 20230626 java.util.regex.Pattern
    介绍java.util.regex.PatternpublicfinalclassPatternimplementsjava.io.Serializable正则表达式的编译表示API常量flagUNIX_LINES启用UNIX行模式在多行模式中匹配^和$时,只有\n被识别成行终止符CASE_INSENSITIVE不区分大小写匹配字符时忽略字母的......
  • 简单记录关于DBbridge迁移bigint类型数据变为负数的问题
    在DBbridge中测试迁移tdsqlpcloud_monitor库时发现部分表迁移失败:根据报错Datatruncation:Outofrangevalueforcolumn'checksum'atrow1,手动在目标库中dropproxy_classes_analysis表,然后用DBbridge的手动补正功能去掉checksum的unsigned限制后重新建表:建表完成......
  • Visitor Pattern-访问者模式
    C#中的访问者模式(VisitorPattern)是一种行为型设计模式,它将数据结构和数据操作分离,使得可以在不修改数据结构的前提下定义新的操作。访问者模式的核心思想是将数据结构和数据操作解耦,将数据操作封装到独立的访问者类中。数据结构定义一组元素,每个元素接受访问者的访问并调用相应......
  • Strategy Pattern-策略模式
    C#中的策略模式(StrategyPattern)是一种行为型设计模式,它可以让你定义一族算法,并将每个算法封装起来,使它们可以相互替换,从而使得算法的变化独立于使用算法的客户端。策略模式的核心思想是将算法的定义和使用分离,将不同的算法封装到独立的策略类中。这样,客户端可以根据需求从不同的......
  • StatePattern-状态模式
    C#中的状态模式是一种行为型设计模式,它允许对象在其内部状态发生改变时改变其行为。状态模式的核心思想是将对象的行为封装在不同的状态类中,对象根据当前状态的不同而执行不同的行为。在C#中,实现状态模式通常需要以下几个参与者:状态接口(StateInterface):定义了表示不同状态的方法......
  • SAP ABAP 模式(Pattern)、模板的创建与调用
    1.代码模板2.模式(Pattern) 调用3.标准模式,一些内置固定格式代码的填充  ......