我正在开发API,它应该提供对基于远程Web服务的资源数量的简单访问。如何初始化类String数不确定的类?
其中一些远程资源需要在交互之前传递特殊参数。例如,其中一个需要传递一对开发人员密钥,另一个需要一对密钥和唯一标识符。第三个完全不需要这些参数。我现在正在使用3种服务,但他们的人数可以扩大。
对于每个Web服务我都有我的API的通讯实现。问题是我不知道如何引入我的API可能性,以传递未知数量的字符串,其含义未知。
我的一些建议:
1.
ServiceFactory.createService (ServiceEnum type, Properties keys);
2.
ServiceFactory.createService (ServiceEnum type, ServiceParams params);
凡ServiceParams是一个标记接口。在这种情况下,我会有这样的帮手类:
public class ServiceHelper {
public static ServiceParams createFirstServiceParams (String secretKey, String publicKey);
public static ServiceParams createSecondServiceParams (String secretKey, String publicKey, String uid);
public static ServiceParams createThirdServiceParams();
}
优点:每个服务的有意义的参数名称。
缺点:如果我提供对第四个服务的支持,那么用户将不得不更新工厂模块。在第一种情况下,用户只需下载新模块。
3.
ServiceFactory.createService (ServiceEnum type, String ... params);
优点:最容易使用。用户不需要执行任何其他操作(如创建ServiceParams的属性)。
缺点:最不明显的方法。用户应该知道哪一组参数对应于他想要创建的服务。
4-6:
同一的变体,但PARAMS被传递不工厂方法,而是服务实例(在其init()方法例如)。优点:如果用户不需要创建相同服务的新实例,用户可以更改其服务的密钥。
缺点:更复杂的方式,利润是值得怀疑的。
你更喜欢哪个变种?为什么?欢迎您的变体。