臟數據(Out-of-date data),指過時的數據。
假如在您的java程序中存在臟數據,將或多或少地給軟件系統帶來一些問題,如:無法實時地應用已經發生改變的配置,軟件系統出現一些莫名其妙的、難以重現的、后果嚴重的錯誤等等。盡量避免臟數據的存在是非常有價值的。本文希望能在這方面給同行們一點幫助。
Fragment 1. 緩存技術的臟數據問題
/**
* A report PRinter is used to print a report.
*
* @version 1.0 9/9/2003
* @author Bill
*/
public class ReportPrinter {
/**
* ConstrUCts a ReportPrinter
instance.
*/
public ReportPrinter() {
// do something...
}
/**
* Prints a printable.
*
* @param printable the specified printable object
*/
public void print(Printable printable) {
Graphics g = getGraphics();
g.setFont(getReportFont(printable.getFont());
printable.print(g);
}
/**
* Returns the corresponding report font of a java font.
*
* @param javaFont the specified java font
* @return the corresponding report font
*/
private Font getReportFont(font javaFont) {
Font reportFont = fontMap.get(javaFont);
if(reportFont == null) {
reportFont = loadFont(javaFont);
fontMap.put(javaFont, reportFont);
}
return reportFont;
}
/**
* Loads the corresponding report font of a java font.
*
* @param javaFont the specified java font
* @param the corresponding report font
*/
protected static Font loadFont(Font javaFont) {
Font reportFont = null;