gpt4 book ai didi

Java - 产品交易者规范类?

转载 作者:行者123 更新时间:2023-11-30 09:15:46 24 4
gpt4 key购买 nike

我在这个例子中寻找产品交易员:http://www.eli.sdsu.edu/courses/spring98/cs635/notes/builder/builder.html (这是第二个例子。第一个是Builder模式)。我有点困惑。在类图中,它显示 Specification 作为不同的类,但在示例中我没有看到这样的类,看起来 Specification 类的方法是在 ProductTrader 类中创建的。我错了吗?如果有产品交易者模式的标准示例,规范类会是什么样子?

最佳答案

在您发布的示例中,规范是传递给创建方法的字符串。我以前从未见过这种模式,所以我不知道有一个标准示例。另一个例子是文件到图像的交易者,其中规范是一个文件,结果是从该文件创建的图像(您可以有一个 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);
}

}

关于Java - 产品交易者规范类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19751335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com