Java桥接模式是一种结构型设计模式,它可以将抽象部分与它的实现部分分离,使它们可以独立地变化。它是一种对象的行为型模式,其主要目的是将抽象化与实现化之间的耦合解耦,使得二者可以独立地变化。
Java 桥接模式的应用场景非常广泛,如图形界面工具包、数据库连接库、事务处理机制、无线通信协议栈、多媒体开发工具包等。
例如:在图形界面工具包中,我们可以使用 Java 桥接模式来分离不同平台的图形界面实现。我们可以使用 Java 抽象层来封装不同平台的图形界面实现(如 Windows 平台、Linux 平台、Mac OS 平台);然后再使用 Java 桥接层来将这些不同平台的图形界面实现进行封装和整合。
public abstract class AbstractGraph { protected GraphImplementor implementor; public AbstractGraph(GraphImplementor implementor) { this.implementor = implementor; } public void drawLine() { implementor.drawLine(); } public void drawCircle() { implementor.drawCircle(); } }
此外,Java 桥接模式也常用于数据库连接库中。我们通常会使用 Java 抽象层来封装不同数据库的 API 进行整合;然后再使用 Java 桥接层来将这些不同数据库 API 进行封装和整合。
public abstract class AbstractDataBase { protected DataBaseImplementor implementor; public AbstractDataBase(DataBaseImplementor implementor) { this.implementor = implementor; } public void connect() { implementor.connect(); } public void query() { implementor.query(); } }
桥接模式将定义与其实现分离。它是一种结构模式。
此模式涉及充当桥接的接口。桥使得具体类与接口实现者类无关。
这两种类型的类可以改变而不影响对方。
interface Printer { public void print(int radius, int x, int y); } class ColorPrinter implements Printer { @Override public void print(int radius, int x, int y) { System.out.println("Color: " + radius +", x: " +x+", "+ y +"]"); } } class BlackPrinter implements Printer { @Override public void print(int radius, int x, int y) { System.out.println("Black: " + radius +", x: " +x+", "+ y +"]"); } } abstract class Shape { protected Printer print; protected Shape(Printer p){ this.print = p; } public abstract void draw(); } class Circle extends Shape { private int x, y, radius; public Circle(int x, int y, int radius, Printer draw) { super(draw); this.x = x; this.y = y; this.radius = radius; } public void draw() { print.print(radius,x,y); } } public class Main { public static void main(String[] args) { Shape redCircle = new Circle(100,100, 10, new ColorPrinter()); Shape blackCircle = new Circle(100,100, 10, new BlackPrinter()); redCircle.draw(); blackCircle.draw(); } }
上面的代码生成以下结果。
Java设计模式 - 中介者模式中介者模式减少多个对象之间的通信。此模式提供了一个处理不同类之间的所有通信的中介类。中介者模式...
Java面向对象设计 -Java实例/静态方法类可以有两种类型的方法:实例方法和类方法。实例方法和类方法也分别称为非静态方法和静态...