参考:https://www.cnblogs.com/WindSun/p/10260547.html
现需要提供大中小3种型号的画笔,能够绘制5种不同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类。而如果使用毛笔的话,只需要3种型号的毛笔,外加5个颜料盒,用3+5=8个类就可以实现15支蜡笔的功能。本实例使用桥接模式来模拟毛笔的使用过程。
Pen.java:
/**
* 抽象类
*/
public abstract class Pen {
protected Color color;
public void setColor(Color color){
this.color=color;
}
public abstract void draw(String name);
}
小笔:
/**
* 扩充抽象类
*/
public class SmallPen extends Pen {
@Override
public void draw(String name) {
String penType="小号毛笔绘制";
this.color.bepaint(penType,name);
}
}
中笔:
/**
* 扩充抽象类
*/
public class MiddlePen extends Pen {
@Override
public void draw(String name) {
String penType="中号笔绘制";
this.color.bepaint(penType,name);
}
}
大笔:
/**
* 扩充抽象类
*/
public class BigPen extends Pen {
@Override
public void draw(String name) {
String penType="大号毛笔绘制";
this.color.bepaint(penType,name);
}
}
颜色接口:
/**
* 颜色接口
*/
public interface Color {
void bepaint(String penType,String name);
}
蓝色:
public class Blue implements Color {
@Override
public void bepaint(String penType, String name) {
System.out.println(penType+"蓝色的"+name+".");
}
}
红色:
/**
* 扩充实现类
*/
public class Red implements Color {
@Override
public void bepaint(String penType, String name) {
System.out.println(penType+"红色的"+name+".");
}
}
绿色:
/**
* 颜色实现类
*/
public class Green implements Color {
@Override
public void bepaint(String penType, String name) {
System.out.println(penType+"绿色的"+name+".");
}
}
测试类:
public class BridgePatternDemo {
public static void main(String[] args) {
Pen pen=new SmallPen();
Color color=new Red();
pen.setColor(color);
pen.draw("花");
}
}