我正在努力构建我们在现有应用程序中使用的第三方API的外观。这个API与外部服务相关联,并且它的可测试性很大且很糟糕。我正在研究如何将其包装起来进行测试(返回预先打包的结果而不是实际调用外部服务)以及与实际API实现的一些脱钩,但是有一些潜在的障碍可能使Facade构建接近与现有API本身一样大。一些例子......
使用Central类非常简单。使用一些额外的方法扩展和包装Central类的装饰器可以处理它,虽然我不确定这是否真的比直接扩展Central类更有优势。这将允许我们将实例传递给其他对象,以便所有调用也将使用修饰的类。但是,这仍然使我们直接与实现相关联。我想进一步解耦,但这可能意味着要为100多个课程建立一个Facade,其中一些是在幕后创建的,而且我们必须在我们的用于保存到外部服务的代码。我们确实拥有此API的来源,但我对进行任何重大修改犹豫不决,因为我们可能需要在未来升级到更高版本。
任何有关尽可能无痛的提示,或者我注定要么接受部分解决方案要么花费大量时间?我以前没有机会创建这么大的Facade,这有点令人生畏。是的,我们可以使用某种Mock框架进行测试,但这只是解决测试的部分解决方案,而不是长期支持和灵活性。
答案 0 :(得分:0)
你说你想建立一个立面。这意味着您完全免费以您想要的任何方式设计您的立面!我将从您的用例开始,并为仅限实现界面。您不必连接您提到的所有“超过200种方法”。
您可以同时使用所有三种以下模式的组合:
很抱歉,如果我错误地理解了你的意思。