桥梁模式
将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化
1. 为了把笔和笔的颜色进行脱耦, 如果要添加笔,我只要实现pen就行,如果我要添加不同颜色,我只要实现color就行了.
先来个笔, 笔持有颜色的类.
public abstract class Pen {
Color mColor;
public void setColor(Color color) {
mColor = color;
}
abstract void draw();
}
2.来个颜色的抽象类
public abstract class Color {
abstract String color();
}
3.不管我要多少种颜色, 我都去实现color
public class BlackColor extends Color {
private static final String TAG = "BlackColor";
@Override
String color() {
Log.e(TAG, "color: ");
return "黑色";
}
}
public class RedColor extends Color {
private static final String TAG = "RedColor";
@Override
String color() {
Log.e(TAG, "color: " );
return "red";
}
}
4. 不管我要多少种笔,我都可以去实现pen
public class MyPen extends Pen {
private static final String TAG = "MyPen";
@Override
void draw() {
Log.e(TAG, "draw: 画OO"+mColor.color() );
}
}
5.现在我想要Mypen的笔,用redcolor去画图.
public class Test {
public void test() {
Pen pen = new MyPen();
Color color = new RedColor();
pen.setColor(color);
pen.draw();
}
}