意图:
将抽象部分与发的实现部分相分离,使他们都可以独立的变化
详细说明:
当一个类的对象的创建由好几个其他类的对象组成,且每部分的实现方式不唯一时,可以将每一部分的实现都抽离出来。
类图:
代码
/**
*
* @ClassName: Color
* @Description: 颜色抽象类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public abstract class Color {
public abstract void getColor();
}
/**
*
* @ClassName: Red
* @Description: 颜色实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class Red extends Color{
public void getColor() {
System.out.println("Red");
}
}
/**
*
* @ClassName: Blue
* @Description: 颜色实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class Blue extends Color{
public void getColor() {
System.out.println("blue");
}
}
/**
*
* @ClassName: PaintBrush
* @Description: 画笔抽象类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public abstract class PaintBrush {
Color color;
public PaintBrush(Color color) {
this.color = color;
}
public abstract void draw();
}
/**
*
* @ClassName: ThickBrush
* @Description: 画笔实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class ThickBrush extends PaintBrush{
public ThickBrush(Color color) {
super(color);
}
public void draw() {
color.getColor();
System.out.println("ThickBrush");
}
}
/**
*
* @ClassName: ThinBrush
* @Description: 画笔实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class ThinBrush extends PaintBrush{
public ThinBrush(Color color) {
super(color);
}
public void draw() {
color.getColor();
System.out.println("ThinBrush");
}
}
/**
*
* @ClassName: Yufan
* @Description: 桥接模式 测试类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class Yufan {
public static void main(String[] args) {
Color color = new Red();
Color color2 = new Blue();
PaintBrush paintBrush = new ThickBrush(color2);
PaintBrush paintBrush2 = new ThinBrush(color);
paintBrush.draw();
paintBrush2.draw();
}
}
测试结果: