0%

设计模式-桥模式

桥模式(Bridge pattern),属于结构型模式。将一个巨大的类分为抽象部分实现部分,使他们可以独立地改变。

结构


涉及到了四个角色,Abstraction(抽象类)、RefinedAbstraction(抽象类的继承类)、Implementor(实现类)、ConcreteImplementor(具体实现类)

抽象类

Abstraction,定义抽象接口,包含实现类的引用,示例如下

1
2
3
4
5
6
7
8
abstract class Shape {
protected Color color;

protected Shape(Color color){
this.color = color;
}
public abstract void draw();
}

抽象类的继承类

RefinedAbstraction,定义实现类接口,示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Circle extends Shape{
public Circle(Color color){
super(color);
}
@Override
public void draw() {
color.printColor();
System.out.println(" Circle");
}
}

public class Rectangle extends Shape{
public Rectangle(Color color) {
super(color);
}

@Override
public void draw() {
color.printColor();
System.out.print(" Rectangle");
}
}

实现类

Implementor,声明所有具体实现类的通用接口。示例如下

1
2
3
public interface Color {
void printColor();
}

具体实现类

ConcreteImplementor,包含所有特定平台代码。示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Red implements Color{
@Override
public void printColor() {
System.out.print("Red");
}
}

public class Blue implements Color{
@Override
public void printColor() {
System.out.print("Blue");
}
}

客户端

对上述代码测试,示例如下

1
2
3
4
5
6
7
8
public class Client {
public static void main(String[] args) {
Shape redCircle = new Circle(new Red());
Shape blueRectangle = new Rectangle(new Blue());
redCircle.draw();
blueRectangle.draw();
}
}

output:

1
2
Red Circle
Blue Rectangle

完整代码

完整代码已上传,项目地址https://github.com/yuan0824/DesignPattern

参考资料