结构设计模式 - Bridge设计模式
今天我们将研究java中的Bridge Design Pattern。当我们在两个接口和实现中都有接口层次结构时,桥接设计模式用于将接口与实现分离,并将实现细节隐藏在客户端程序中。
桥梁设计模式
就像Adapter模式一样,桥梁设计模式是结构设计模式之一。
根据GoF桥梁的设计模式是:
将抽象与其实现分离,以使两者可以独立变化
Java示例中的桥设计模式
如果我们通过示例来研究桥梁设计模式,那将很容易理解。假设我们在接口和实现中都有一个接口层次结构,如下图所示。
现在我们将使用桥接设计模式将接口与实现分离。应用桥接模式后,类和接口的UML图将如下图所示。
注意实现桥接模式的组合之间的桥梁Shape
和Color
接口以及组合的使用。
这是Shape和Color接口的java代码。
Color.java
package com.journaldev.design.bridge;
public interface Color {
public void applyColor();
}
Shape.java
package com.journaldev.design.bridge;
public abstract class Shape {
//Composition - implementor
protected Color color;
//constructor with implementor as input argument
public Shape(Color c){
this.color=c;
}
abstract public void applyColor();
}
我们有三角和五角大楼实施课程如下。
Triangle.java
package com.journaldev.design.bridge;
public class Triangle extends Shape{
public Triangle(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Triangle filled with color ");
color.applyColor();
}
}
Pentagon.java
package com.journaldev.design.bridge;
public class Pentagon extends Shape{
public Pentagon(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Pentagon filled with color ");
color.applyColor();
}
}
以下是RedColor和GreenColor的实现类。
RedColor.java
package com.journaldev.design.bridge;
public class RedColor implements Color{
public void applyColor(){
System.out.println("red.");
}
}
GreenColor.java
package com.journaldev.design.bridge;
public class GreenColor implements Color{
public void applyColor(){
System.out.println("green.");
}
}
让我们用测试程序测试我们的桥模式实现。
BridgePatternTest.java
package com.journaldev.design.test;
import com.journaldev.design.bridge.GreenColor;
import com.journaldev.design.bridge.Pentagon;
import com.journaldev.design.bridge.RedColor;
import com.journaldev.design.bridge.Shape;
import com.journaldev.design.bridge.Triangle;
public class BridgePatternTest {
public static void main(String[] args) {
Shape tri = new Triangle(new RedColor());
tri.applyColor();
Shape pent = new Pentagon(new GreenColor());
pent.applyColor();
}
}
上述桥接模式示例程序的输出是:
Triangle filled with color red.
Pentagon filled with color green.
当抽象和实现可以独立地具有不同的层次结构并且我们想要从客户端应用程序隐藏实现时,可以使用桥设计模式。
转载来源:https://www.journaldev.com/1491/bridge-design-pattern-java