Java: 如何避免 display() 和 write(pdf) 之间的代码重复

Java: How to avoid code duplication between display() and write(pdf)

我在 class

中有两个函数
void display()

void write(PGraphics pdf)

我使用 display() 将元素显示到屏幕上。有没有一种方法可以调用 display() 中的代码,这样我就不必在 write(pdf) 中再次写出每个函数?例如 line(0,0,100,100)pdf.line(0,0,100,100)

如果您想使用所有代码,只需在内部调用它(但我猜您不想那样做)

您应该重构代码并将您想要在这两种方法中使用的内容放入它自己的方法中,例如:

private void hopefullyIGetABetterName(...) {...}

您可以在 displaywrite 中调用此方法 希望这对您有所帮助,否则请随时提问 :-)

您可以通过绘制到 PGraphics 图像而不是直接绘制到屏幕上来实现,然后将该图像绘制到屏幕上。这样您就可以将其换成 PDF PGraphics 而无需更改任何代码。像这样:

PGraphics pg;
PGraphics pdf;

boolean usePdf = false;

void setup() {
  size(100, 100);
  pg = createGraphics(width, height);
  pdf = //whatever
}

void draw(){
   if(usePdf){
      display(pdf);
   }
   else{
      display(pg);
      image(pg, 0, 0);
   }
}

void display(PGraphics g) {
  g.beginDraw();
  g.background(100);
  g.stroke(255);
  g.line(20, 20, mouseX, mouseY);
  g.endDraw();
}
  • 提取屏幕绘图和 PDF 绘图之间的通用接口(我们称之为 Drawable
  • 实现 Drawable 以绘制到屏幕。
  • 实现 Drawable 以绘制成 PDF
  • 创建一个采用该接口的 draw 方法。
  • display()改为调用draw(screenDrawable)
  • write(...)改为调用draw(pdfDrawable)