Bridge

from: Bridge Pattern Tutorial with Java Examples

Example

Abstraction

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();
}
public class Triangle extends Shape {

    public Triangle(Color c) {
        super(c);
    }

    @Override
    public void applyColor() {
        System.out.print("Triangle filled with color ");
        color.applyColor();
    } 

}

public class Pentagon extends Shape {

    public Pentagon(Color c) {
        super(c);
    }

    @Override
    public void applyColor() {
        System.out.print("Pentagon filled with color ");
        color.applyColor();
    } 

}

Implementor

public interface Color {

    public void applyColor();
}
public class RedColor implements Color{

    public void applyColor() {
        System.out.println("red.");
    }
}

public class GreenColor implements Color {

    public void applyColor() {
        System.out.println("green.");
    }
}

Usage

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();
    }

}

from: Bridge Design Pattern in Java