2013-11-03 30 views
2

我正在查看該產品貿易商的示例:http://www.eli.sdsu.edu/courses/spring98/cs635/notes/builder/builder.html(這是第二個示例,首先是Builder模式)。我有點困惑。在類圖中,它顯示Specification爲不同的類,但在示例中,我沒有看到這樣的類,它看起來像Specification類的方法是在ProductTrader類中創建的。我錯了嗎?如果有產品交易者模式的標準示例,規範類將如何看起來像?Java - 產品交易者規範類?

回答

2

在您發佈的示例中,規範是傳遞到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); 
    } 

} 
+0

也許你有一個鏈接,我可以看到與圖像創建者的例子,其中規範被用作文件? – Andrius

+0

我做了這個例子,但我可以將其添加到我的答案。 – Pace

+0

將不勝感激 – Andrius