在您發佈的示例中,規範是傳遞到create方法的字符串。我從來沒有見過這種模式,所以我不知道一個標準的例子。另一個例子是一個文件到圖像貿易商在規範文件中,其結果是從該文件中創建的圖像(你可以有一個PNG的創造者,一個創作者JPG等)
public interface ProductTrader<P, S> {
public P create(S specification);
}
public interface ImageCreator {
public boolean canProcess(File file);
public Image createImage(File file);
}
public class PNGImageCreator implements ImageCreator {
public boolean canProcess(File file) {
return (file.isFile() && file.canRead() && file.getName().endsWith(".png"));
}
public Image createImag(File file) {
//Image I/O code goes here
}
}
public class FileToImageProductTrader implements ProductTrader<Image, File> {
private List<ImageCreator> imageCreators = new ArrayList<ImageCreator>();
public void registerCreator(ImageCreator creator) {
imageCreators.add(creator);
}
public Image create(File specification) {
for(ImageCreator creator : imageCreators) {
if(creator.canProcess(specification)) {
return creator.createImage(specification);
}
}
//No creator for given file
return null;
}
}
public class Main {
public static void main(String [] args) {
FileToImageProductTrader trader = new FileToImageProductTrader();
PNGCreator pngCreator = new PNGCreator();
trader.registerCreator(pngCreator);
File imageFile = new File("/tmp/foo.png");
Image image = trader.create(imageFile);
}
}
也許你有一個鏈接,我可以看到與圖像創建者的例子,其中規範被用作文件? – Andrius
我做了這個例子,但我可以將其添加到我的答案。 – Pace
將不勝感激 – Andrius