gpt4 book ai didi

java - 返回列表的工厂模式

转载 作者:行者123 更新时间:2023-11-30 06:21:40 25 4
gpt4 key购买 nike

在我的程序中,我同时将一个文件上传到多个服务器,如google drive、dropbox 等。我正在使用适配器设计模式来适应每个服务器 api,因此每个服务器具体类都实现一个 FileServer 接口(interface),最后我有一个 FileServer 对象列表。我的问题:由于我的程序将来必须支持新服务器,封装所有服务器对象实例化(我的意思是“...= new...”部分)的最佳方法是什么?想到的是工厂模式,但是在工厂方法中返回一个列表是否正确?谢谢。

最佳答案

通常工厂模式封装了从某种“ Material ”(如规范)创建单个对象背后的复杂性。例如,给定一个 URL,创建到由 URL 定义的服务器的连接。

在您的情况下,规范的工厂模式将为文件存储(URL、上下文对象等)采用一些规范并创建单个文件服务器对象。虽然没有什么可以禁止您在给定规范列表的情况下从工厂方法返回对象列表,但遍历规范列表并为每个规范调用工厂方法几乎同样简单且可以说更清晰。像这样:

List<FileServer> fsList = new ArrayList<FileServer>();
for(FSSpec spec : fileServerSpecs)
{
FileServer fs = FileServerFactory.create(spec);
fsList.add(fs);
}

// do something with your list of file servers.

这也更易于重用,因为在某些情况下,您可能希望根据规范创建单个文件服务器,而不必费心创建仅包含该规范的单项列表以传递给您的工厂方法。

关于java - 返回列表的工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20135731/

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