我正在维护旧版SDK。对于不同的平台,SDK的行为会有所不同。它使用静态变量,并且需要在任何API调用之前创建静态变量,如下所示:
静态全局变量(OLD CODE)的示例:
SDKContext.init();
VideoManager manager = new VideoManager();
public void VideoManager#search() {
SDKContext.search();
}
像VideoManager这样的组件到处都是。我的直觉告诉我,我应该使用局部变量,但不能确定。
本地变量(我的首选方式):
SDKContext context = new SDKContext();
// Or even using singleton
SDKContext context = SDKContext.getInstance();
VideoManager manager = new VideoManager(context);
public void VideoManager#search() {
context.search();
}
这两种方法的优点和缺点是什么?欢迎任何建议/建议。
答案 0 :(得分:0)
我认为你不能把它称为FACADE。
Facade与普通方法相比,简化了API版本,涵盖了更复杂的操作。在你的情况下,VideoManager#search()
的两种情况下的API - 你称之为非外观的那个,以及你声称是外观的那个 - 完全相同。而且,方法体也几乎相同。用对象替换全局变量与作为一个外观没有任何共同点,它只是你在实现过程中可以做出的决定。
全局变量(或单例)可以简化你的代码(在这种情况下,你需要将它传递到很多地方,值得尝试一下),代价是更难的测试(模拟)它 - 决定取决于你。
答案 1 :(得分:0)
静力学使得单元测试变得困难。
方法2要好得多。它对IoC友好且易于测试。
答案 2 :(得分:0)
你可以尝试一些IoC容器。我会为你制作“单身人士”,其中一些甚至还有“自动接线”。