这个问题在我的项目中经常出现。例如,假设我有两个接口,一个从 API 检索信息,另一个解析该信息。
public interface APIClient {...}
public interface APIParser {...}
现在,我可能需要不同的 API,因此我将有许多实现,但APICLient每个实现都需要自己的APIParser.
这将导致这种类型的结构
public class APIClientA implements APIClient {...}
public class APIParserA implements APIParser {...}
public class APIClientB implements APIClient {...}
public class APIParserB implements APIParser {...}
...
...
所以,一般来说,这意味着每次我想添加一种新类型的 API 时,我都必须为同一类型创建几个类,并确保它们只相互通信,而不是与其他的实现通信API 的类型。
这看起来与 Bridge 设计模式提出的非常相似,但这种模式将允许任何 APIClient 使用任何 APIParser(我说得对吗?)
那么,有更好的解决方案吗?或者也许这很好,不需要重构它。
另外,也许解析不是正确的词,对不起我的英语,但我的意思是分析 JSON/XML 响应以便从中获取具体信息。我分析每个响应的方式取决于每个 API 提供的结构,所以这就是为什么我需要不同的“解析器”
编辑:
我将扩展这个想法。有一个客户端类使用 APIClient 来发出请求,带有给定类型的参数。一旦请求遇到 JSON 响应,客户端就会使用相应的 APIParser 来获取有关响应的特定信息。
public class ClientClass {
...
json = APIClientTypeA.makeRequest(city, day, ...);
temperature = APIParserTypeA.getTemperature(json);
...
}
这里的问题是客户端需要确保使用正确的 APIClient 和 APIParser 实现(它们必须匹配)
缥缈止盈
浮云间
相关分类