笔有大、中、小三种型号,纸有A4、8K、16K三种型号,颜料有红、蓝、绿三种,请采用桥接器设计模型进行系统设计,能够使用不同型号的笔在不同型号的纸上利用不同颜色的颜料进行绘画。
下面这段代码展示了一个简单的桥接模式(桥接模式)的实现。在这个模式中,桥接模式通过将抽象部分(绘制工具)与实现部分(颜色、笔)分离,使它们可以独立变化。
(1)Color类:表示颜料,包含颜色的名称。
(2)DrawingTool类:绘画工具,是一个接口,定义了绘画工具应该具有的绘画行为。
(3)Pen类:实现了绘图工具接口,代表一种笔,利用颜色来绘画。
(4)Paper类:实现了DrawingTool接口,代表一种纸,通过组合关系连接到笔实现在纸上绘画的功能。
(5)Test类:测试类,展示了如何使用这些类来进行绘画,创建不同颜色和大小的笔和纸,并在纸上进行绘画操作。
Color(颜料类)
//颜料
public class Color {
private String name;
public Color(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
DrawingTool(绘画工具类)
//绘画工具
public interface DrawingTool {
void draw();
}
Paper(纸类)
//纸类
public class Paper implements DrawingTool{
//通过组合的方式实现Paper和Pen之间的联系
private Pen pen;
private String name;
public String getName() {
return name;
}
public Paper(Pen pen,String name) {
this.pen = pen;
this.name=name;
}
public void draw() {
pen.draw();
System.out.println("在"+getName()+"纸上绘画");
}
}
Pen(笔类)
//笔类
public class Pen implements DrawingTool{
private String name;
public String getName() {
return name;
}
//通过组合的方式实现Color和Pen之间的联系
private Color color;
public Pen(Color color, String name) {
this.color = color;
this.name=name;
}
public void draw() {
System.out.println("使用" + color.getName() + "颜色的"+getName()+"型笔绘画");
}
}
Test(测试类)
public class Test {
public static void main(String[] args) {
Color red = new Color("红");
Color blue = new Color("蓝");
Color green = new Color("绿");
Pen bigPen = new Pen(green,"大");
Pen middlePen = new Pen(red,"中");
Pen smallPen = new Pen(green,"小");
Paper a4Paper = new Paper(middlePen,"A4");
Paper eightKPaper = new Paper(smallPen,"8K");
Paper sixteenKPaper = new Paper(bigPen,"16K");
// 绘画
a4Paper.draw();
eightKPaper.draw();
sixteenKPaper.draw();
}
}
运行结果: