如何最好地组织这样一个图书馆的结构?
具有单个API的库,与Java SE和Android兼容并且相同。
API:
/*
* Given a fonts name, size (height) and a text,
* the library returns the doubled (<- arbitrary) width of the text in pixels.
*/
int fetchTextWidthDoubled(String fontName, int fontSize, String text);
虽然大小加倍是常见代码,但不应重复, 在Android和Java SE中,获取字体度量的代码是不同的。
假设我使用所需的代码实现了两个类:
Java SE:
public class JavaSeTextWidthFetcher implements TextWidthFetcher {
@Override
public int fetchTextWidth(String fontName, int fontSize, String text) {
// something with java.awt.Font
}
}
机器人:
public class AndroidTextWidthFetcher implements TextWidthFetcher {
@Override
public int fetchTextWidth(String fontName, int fontSize, String text) {
// something with android.graphics.Paint.FontMetrics
}
}
和API实现大致相同:
public class DoubleTextWidthFetcher
private TextWidthFetcher impl;
@Override
public int fetchTextWidthDoubled(String fontName, int fontSize, String text) {
return 2 * impl.fetchTextWidth(fontName, fontSize, text);
}
}