假设现需要提供3种型号的画笔能画出(三角形,正方形,星形),能够绘制3种不同颜色,如果使用蜡笔,我们需要准备3*3=9支蜡笔,也就是说必须准备9个具体的蜡笔类。
而如果使用毛笔的话,只需要3种型号的毛笔,外加3个颜料盒,用3+3=6个类就可以实现9支蜡笔的功能
所以他需要两套抽象
//第一套
public interface Color {
void paint();
}
public class Green implements Color{
@Override
public void paint() {
System.err.println("green");
}
}
public class Blue implements Color{
@Override
public void paint() {
System.err.println("blue");
}
}
public class Red implements Color{
@Override
public void paint() {
System.err.println("red");
}
}
第二套
public abstract class Pen {
Color color;
/**
* 每种笔都有自己的实现
*/
public abstract void operationDraw();
/**
* 设置画笔Color
*/
public void setImplementor(Color imp) {
this.color = imp;
}
}
public class StarPen extends Pen{
@Override
public void operationDraw() {
System.err.println("Star画笔使用颜色"+this.color);
}
}
public class TrianglePen extends Pen{
@Override
public void operationDraw() {
System.err.println("Triang画笔使用颜色"+this.color);
}
}
新增测试类测试
public class Client {
public static void main(String[] args) {
Pen starPen = new StarPen();
starPen.color = new Green();
starPen.operationDraw();
}
}