假設(shè)現(xiàn)需要提供3種型號的畫筆能畫出(三角形璃赡,正方形,星形)献雅,能夠繪制3種不同顏色碉考,如果使用蠟筆,我們需要準備3*3=9支蠟筆挺身,也就是說必須準備9個具體的蠟筆類侯谁。
而如果使用毛筆的話,只需要3種型號的毛筆章钾,外加3個顏料盒墙贱,用3+3=6個類就可以實現(xiàn)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;
/**
* 每種筆都有自己的實現(xiàn)
*/
public abstract void operationDraw();
/**
* 設(shè)置畫筆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();
}
}